node.js - NodeJS 无法识别 .env 文件

标签 node.js environment-variables dotenv

我有 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_PASSWORDuser:process.env.MONGO_USER
等等,所以,阅读 .env 有问题文件。我知道.env文件有这些值,文件是 UTF-8,没有引号等。.env file 与其他服务是相同的文件,它在其他服务中工作正常,但我不知道为什么这里没有被读取。

任何的想法?

编辑:

enter image description here

另外,我放了一个 console.log(process.env);config.ts文件,它显示如下值:

enter image description here

但是没有来自 .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/

相关文章:

node.js - Next 中如何处理不同的 .env 文件?

linux - "find a command in a path"是什么意思?

node.js - MS BOT框架: Attachments

node.js - 如何修复 "Response to preflight request doesn' t 通过访问控制检查 : It does not have HTTP ok status"error in react app with nodejs api

node.js - 根据 mongoose、mongoDB 中的条件填充

jenkins - 如何为包含空格的 Jenkins 环境变量指定值

node.js - 我有 node.js 应用程序我正在使用 dotenv 设置 .env,使用端口时出现以下错误

mysql - 未处理的拒绝 SequelizeDatabaseError : No database selected

environment-variables - 如何在 Svelte 中加载环境变量

javascript - 如何在 meteor 中将表单数据从客户端传递到服务器?