我有 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
file 与其他服务是相同的文件,它在其他服务中工作正常,但我不知道为什么这里没有被读取。任何的想法?
编辑:
另外,我放了一个
console.log(process.env);
在 config.ts
文件,它显示如下值:但是没有来自
.env
的值例如,在图片中有一个名为 COMPUTERNAME
的值。所以如果我把 console.log(process.env.COMPUTERNAME);
我得到:IBM-NOT87
为什么没有得到 .env 文件?
最佳答案
似乎您需要要求/配置 dotenv
. Docs :
As early as possible in your application, require and configure dotenv.
require('dotenv').config()
关于node.js - NodeJS 无法识别 .env 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61038365/