Хранение токена Sanity в секрете с Now не работает - PullRequest
0 голосов
/ 26 декабря 2018

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

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

  2. Iдобавил файл 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 невозможно добраться.Похоже, секрет отсутствует.Что я могу делать не так?

1 Ответ

0 голосов
/ 28 июля 2019

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

...