Node.js NodeJS无法识别.env文件
我有5个NodeJS服务正在运行,但其中一个有问题 这是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
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”的所有实例?有其他方法需要/配置它。