NextJS + Heroku: переменные env не загружаются - PullRequest
0 голосов
/ 03 марта 2019

Я использую NextJS и Heroku.

В индексе - Первая загрузка возвращает данные, которые я извлек в getInitialProps, но в обычной функции я получаю сообщение об ошибке, потому что env vars отсутствуют.

Когда я перехожу на другую страницу, я получаю ту же ошибку, но когда я обновляюсь, я вижу данные, извлеченные в getInitialProps.Но опять же, в обычной функции я получаю сообщение об ошибке для отсутствующих переменных env.

Локально это работает.Я попробовал dotenv-webpack, но это не помогает.Я добавил конфигурационные переменные в Heroku.

Есть идеи?

Это мой файл next.config.js:

const { parsed: localEnv } = require('dotenv').config()
const webpack = require('webpack')
const Dotenv = require('dotenv-webpack')
const path = require('path')

module.exports = {
    //target: 'serverless',
    webpack(config) {
        config.plugins.push(new webpack.EnvironmentPlugin(localEnv))
        config.node = {fs: "empty"};
        config.plugins = config.plugins || []

        config.plugins = [
            ...config.plugins,

            // Read the .env file
            new Dotenv({
                path: path.join(__dirname, '.env'),
                systemvars: true
            })
        ]

        return config
    },
    publicRuntimeConfig: {
        ADDRESS: process.env.ADDRESS,
        API_TOKEN: process.env.API_TOKEN,
        INFURA_API_KEY: process.env.INFURA_API_KEY
    }
}

1 Ответ

0 голосов
/ 07 марта 2019

Получил ответ на странице github next.js: https://github.com/zeit/next.js/issues/6533

Я пробовал несколько разных способов решения этой проблемы.

Настройка параметров среды с помощью dotenv-webpack didn 'я не работаюТо, что работало, устанавливало env в next.config.js как это:

const { parsed: localEnv } = require('dotenv').config()
const webpack = require('webpack');

const path = require('path')

module.exports = {
    webpack(config) {
        config.plugins.push(new webpack.EnvironmentPlugin(localEnv))
        config.node = {fs: "empty"};
        config.plugins = config.plugins || []

        config.plugins = [
            ...config.plugins,
        ]

        return config
    },
    env: {
        ADDRESS: '0xd6F75293ec795',
        API_TOKEN: 'YUBKzlbA2eFmNbkzk',
        INFURA_API_KEY: '97eb10aac61799f9e865',
        MNEMONIC: 'my not so secret for testing password',
    }
}
...