Для этого вы можете использовать конфигурацию исполнения Next * .Поскольку вы имеете дело с секретным токеном, вам нужно будет использовать serverRuntimeConfig
, который доступен только на стороне сервера:
// next.config.js
module.exports = {
serverRuntimeConfig: {
// either inline or get from env variable
SANITY_TOKEN: process.env.SANITY_TOKEN,
SANITY_TOKEN: "alternatively stored in this file"
}
}
В вашей серверной части вы можете получить доступ к SANITY_TOKEN
какthis:
// server-side only
import getConfig from "next/config";
const { SANITY_TOKEN } = getConfig().serverRuntimeConfig;
Однако этот код будет зависать, если вы попытаетесь запустить его на стороне клиента, поэтому вам нужно убедиться, что работает только на сервере (см. также эта проблема ).
Обратите внимание, что ваш файл now.json
позволяет вам контролировать, какие переменные env используются при развертывании в ZEIT сейчас , но не влияетваши локальные сборки (такие как $ npm run dev
и $ npm run build
).
Таким образом, вы должны установить переменную env другим способом при локальном запуске Next.