【问题标题】:npm dotenv environment variables not recognized in nodejs module在 nodejs 模块中无法识别 npm dotenv 环境变量
【发布时间】:2017-06-14 21:24:26
【问题描述】:

这是我的项目结构:

package.json

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon $NODE_DEBUG_OPTION server/boot.js --exec babel-node",
     "start": "nodemon server/boot.js --exec babel-node",
     "build": "babel server -d dist/server",
     "serve": "node dist/server/boot.js"
   },

主文件是server/boot.js

import dotenv from 'dotenv';
import path from 'path';

dotenv.load({path: path.join(__dirname, '.env')});

import _ from 'underscore';
import configs from './config/index';

server/config/index.js 只是一个桶文件,用于导入其他配置文件:

import app from './app';
import database from './database';

export default Object.assign({}, app, database);

在每个配置文件中,我无法访问 .env 文件中定义的 process.env 对象的任何属性。

这是一个配置文件供参考:

export default  {
    app: {
        host: process.env.HOST || 'localhost',
        port: process.env.PORT || 9000,
    }
}

这里 process.env.HOST 未定义,但密钥存在于 .env 文件中。

我做错了什么?

【问题讨论】:

    标签: node.js npm module environment-variables


    【解决方案1】:

    .env 文件中定义的 process.env 对象。

    能否请您更具体地了解 process.env 文件?

    根据https://www.npmjs.com/package/dotenv#rules,该文件应采用以下格式:

    VAR1=value1
    VAR2=value2
    

    而不是在

    export default { 
        VAR1: 'value1', 
        VAR2: 'value2' 
    }
    

    【讨论】:

    • 重要的是要注意dotenv 包不允许在行首使用可选的export,这与几乎所有其他实现都不同。这让我大吃一惊,作者明确拒绝了将包与其他语言保持一致的拉取请求。
    猜你喜欢
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多