Node.js NodeJS无法识别.env文件

Node.js NodeJS无法识别.env文件,node.js,environment-variables,dotenv,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": "developm

我有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:缺少节点选项
生成该消息是因为它没有从
process.env.ELASTIC\u PATH
读取值,但是如果我输入了一个类似“”的硬编码值,并且它再次尝试运行,则会出现另一个错误:

错误:创建服务客户端时必须提供凭据
该错误是因为它试图读取
password:process.env.MONGO_密码
user:process.env.MONGO_用户

因此,读取
.env
文件时出现问题。我知道
.env
文件具有这些值,并且该文件是UTF-8格式的,没有引号等。
.env
文件与其他服务是同一个文件,它在其余部分工作正常,但我不知道为什么不在这里读取

有什么想法吗

编辑:

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

但是
.env
中没有值,例如,在图片中有一个名为
COMPUTERNAME
的值,因此如果我放置
console.log(process.env.COMPUTERNAME)我得到:
IBM-NOT87


为什么不获取.env文件?

似乎需要/配置
dotenv

在应用程序中尽早要求并配置dotenv

require('dotenv').config()

进一步扩展@JBallin-answer 你应该在你的
app.js上使用这个

  • 或者,如果这不起作用,则需要将其显式添加到要使用这些变量的文件中
共享图像,因为有时更容易看到

这里的代码=>

require('dotenv/config') // require the dotenv/config at beginning of file
const express = require('express')
const mongoose = require('mongoose')
require('dotenv').config({path:'./sample.env})

在使用环境变量的文件中, 尽早使用
“dotenv”
,并在
config()
方法中指定
.env
文件的路径,即使该文件位于根目录或节点启动的同一目录中

要求和指定同一目录中的文件的代码位于答案的第一行


此外,为了进一步阅读,请您向我展示您的.env文件及其在应用程序根目录中的位置。好的,我将使用文件的某些部分编辑que问题,其中还包含一个commentrequire('dotenv').config();在您试图访问环境的文件中添加。和像thisprocess.env.NODE_env这样的访问,并且必须安装'dotenv',我应该把它放在哪里?抱歉,在nodejs的第一天,我已经花了12个小时安装这12个微服务。。。这是唯一一个在应用程序的入口点出现问题的,有时命名为
app.js
。这将把你的
.env
加载到
进程.env
中。最好在这里注册:
exec:“node-r ts node/register-r dotenv/config Index.ts dotenv\u config\u path=$(pwd)/.env”“,
该脚本称为
nodemon
它由
npm start dev
Man运行。。。我不明白。当我在整个文件夹中搜索时,其余的微服务实际上没有这个字符串。但是我在Index.js的第一部分中就提到了这一行,现在它可以工作了。我真的不明白。Index.js太棒了!很高兴它起作用了。我不确定exec脚本是如何工作的。关于其他微服务,您是否尝试过搜索“dotenv”的所有实例?有其他方法需要/配置它。