我正在运行多个 Node.js 服务,但其中一个服务出现问题。
这是nodemon.json
file:
{
"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
and user:process.env.MONGO_USER
等等,所以,阅读时存在问题.env
文件。我知道.env
文件具有这些值,并且文件采用 UTF-8 格式,不带引号等。.env
文件与其他服务是相同的文件,它在其他服务中工作正常,但我不知道为什么这里没有被读取。
任何想法?
另外,我放了一个console.log(process.env);
in config.ts
文件,它显示如下值:
但没有来自的值.env
例如,图中有一个值叫做COMPUTERNAME
所以如果我把console.log(process.env.COMPUTERNAME);
I get: IBM-NOT87
为什么没有获取 .env 文件?