繁体   English   中英

heroku中的环境变量

[英]environment variables in heroku

const firebase = require('firebase');
const devConfig = {
 //config here
};
const prodConfig = {
//config here
};

export const firebaseInit = firebase.initializeApp(process.env.NODE_ENV == 'development' ? devConfig : prodConfig);
export const rootRef = firebase.database().ref();

我有这个firebase配置文件。

在我的procfile中,我有: web: NODE_ENV=production node ./src/server/index.js

在我的webpack中,我有:

plugins: [
    new webpack.DefinePlugin({
        'process.env': {
            'NODE_ENV': JSON.stringify(process.env.NODE_ENV) || '"development"'
        }
    }),

在我的package.json中,我有:

"start": "node src/server/index.js",
"start:production": "NODE_ENV=production ./node_modules/.bin/webpack && node src/server/index.js",
"start:dev": "NODE_ENV=development ./node_modules/.bin/webpack && node src/server/index.js",

在我的heroku应用程序设置中,我将NODE_ENV设置为key,将production为value

在将代码向上推后,我已经部署了主代码。 但是,当应用启动时,它仍然以“开发模式”登录到我的控制台。 我缺少在生产中启动该应用程序的原因? 我可以在本地做到这一点,而不是在heroku上

不知道这是否能解决您的问题,但希望对您有所帮助。

1)Heroku可以在Procfile中没有“ NODE_ENV = production”的代码前拾取“ start”脚本吗? 我不使用Procfile,我只是依靠启动脚本,所以不确定。

2)在start:production脚本调用&&之后,NODE_ENV = production是否肯定进行? 可以肯定,值得将其复制并粘贴到节点脚本之前。

3)JSON.stringify会将一个空字符串解析为true,因此最好将||放入 JSON.stringify函数中的“开发”,如下所示:

'NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')

4)您在'“ development”'周围有单引号和双引号,这将创建带有双引号的字符串,该字符串与只是单词development的字符串不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM