Хранение токена Sanity в секрете с Now не работает

Я пытаюсь сохранить токен Sanity в секрете при развертывании моего проекта с Now, но, похоже, все это не работает. Вот моя ситуация:

  1. Я добавил свой токен Sanity в качестве секрета для CLI (я назвал его sanity_token).

  2. Я добавил now.json файл в корне моего проекта:

    {
        "version": 1,    
        "build": {
            "env": {
                "SANITY_TOKEN": "@sanity_token"
            }
        },    
        "env": {
            "SANITY_TOKEN": "@sanity_token"
        }            
    }```
    
  3. Я использовал переменную в sanity.js как:

    ...
    token: process.env.SANITY_TOKEN,
    ...
    

... но, похоже, не работает ни при запуске npm run dev ни при развертывании с now, Страница загружается и ошибок нет, но я не получил никакого контента, потому что до Sanity невозможно добраться. Похоже, секрет отсутствует. Что я могу делать не так?

0 ответов

Для этого вы можете использовать конфигурацию времени выполнения 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 нравится:

// server-side only
import getConfig from "next/config";
const { SANITY_TOKEN } = getConfig().serverRuntimeConfig;

Однако этот код будет аварийно завершен, если вы попытаетесь запустить его на стороне клиента, поэтому вам нужно будет убедиться, что он работает только на сервере(см. Также эту проблему).


Обратите внимание, что ваш now.json файл позволяет вам контролировать, какие переменные env используются при развертывании в ZEIT Now, но не влияет на ваши локальные сборки (такие как $ npm run dev а также $ npm run build).

Таким образом, вы должны установить переменную env другим способом при локальном запуске Next.

Другие вопросы по тегам