【发布时间】:2020-07-17 04:27:49
【问题描述】:
我有 5 个 NodeJS 服务正在运行,但其中一个有问题。
这是nodemon.json 文件:
{
"watch": ["**/*.ts"],
"ext": "ts,json",
"ignore": ["./test/*.ts"],
"exec": "node -r ts-node/register -r dotenv/config Index.ts dotenv_config_path=$(pwd)/.env",
"env": {
"NODE_ENV": "development"
}
}
与其他服务相同。当我运行 npm run dev 时,我收到错误消息,具体取决于从 .env 文件中获取的值,例如:
const LOCAL_CONFIGURATION = {
PORT_APP: 8082,
MONGODB: {
SERVER: process.env.MONGO_DTE,
AUTH: {
auth: {
password:process.env.MONGO_PASSWORD,
user:process.env.MONGO_USER
}
},
},
MS_NOTIFICACION: "http://localhost:8089/notificacion",
ELASTIC_PATH: process.env.ELASTIC_PATH,
...COMMON,
};
第一条错误信息是:
ConfigurationError: Missing node(s) option
产生该消息是因为它没有从 process.env.ELASTIC_PATH 读取值,但如果我输入一个硬编码值,如“http://with.the.correct.url”,然后它再次尝试运行,我会收到另一个错误:
Error: Credentials must be provided when creating a service client
该错误是因为它试图读取 password:process.env.MONGO_PASSWORD 和 user:process.env.MONGO_USER
等等,所以,读取.env 文件时出现问题。我知道.env 文件具有这些值,并且该文件采用 UTF-8 格式,没有引号等。.env 文件与其他服务是同一个文件,它在其余部分工作正常,但我没有知道为什么这里没有被阅读。
有什么想法吗?
编辑:
另外,我在config.ts 文件中放了一个console.log(process.env);,它显示的值如下:
但是没有来自.env 的值,例如,图片中有一个名为COMPUTERNAME 的值,所以如果我输入console.log(process.env.COMPUTERNAME);,我得到:IBM-NOT87
为什么没有得到 .env 文件?
【问题讨论】:
-
请给我看看你的 .env 文件和它的位置
-
在应用程序的根目录。好的,我将使用文件的某些部分编辑 que 问题并附上评论
-
require('dotenv').config();在您尝试访问 env fie 的地方添加这些文件。并且像这样访问process.env.NODE_ENV 并且必须安装'dotenv'
标签: node.js environment-variables dotenv