Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS动态环境变量设置_Javascript_Node.js - Fatal编程技术网

Javascript NodeJS动态环境变量设置

Javascript NodeJS动态环境变量设置,javascript,node.js,Javascript,Node.js,我创建了一个NodeJS服务器,并尝试动态设置环境变量。但我面临一个奇怪的问题。我创建了一个env.js文件,下面是相关代码: const环境={} environment.dev={ 港口:3000, envName:'dev' } environment.prod={ 港口:5000, envName:'prod' } const currentEnvironment=typeof process.env.NODE_env==='string' ? process.env.NODE_env

我创建了一个NodeJS服务器,并尝试动态设置环境变量。但我面临一个奇怪的问题。我创建了一个
env.js
文件,下面是相关代码:

const环境={}
environment.dev={
港口:3000,
envName:'dev'
}
environment.prod={
港口:5000,
envName:'prod'
}
const currentEnvironment=typeof process.env.NODE_env==='string'
? process.env.NODE_env
:“dev”
console.log('current environment:',currentEnvironment)//获取currentEnvironment:prod
console.log('environment obj:',environment)//正确获取环境obj
log('getting obj from environment obj:',environment[currentEnvironment])//但未定义
const environment ToExport=环境类型[currentEnvironment]=“对象”
? 环境[当前环境]
:environment.dev

module.exports=environmentToExport
应该有双
符号
“SET NODE\u ENV=dev&&nodemon index”
,如果您对服务器不确定,可以使用
跨环境
软件包将您的npm脚本重新定义为
“prod”:“SET NODE\u ENV=prod&nodemon index”
(注意,
prod
&
字符之间的空格已被删除)。对
dev
脚本也执行相同操作,例如
“dev”:“设置节点=dev&nodemon索引”,
@Girish single或double
&
,两者都有效。@RobC问题不在我的脚本中,我得到的是正确的
NODE_ENV
值。@Robin-我相当确定问题在你的npm脚本中。尝试添加以下;
console.log('current environment number of characters:',currentEnvironment.length)
到另一个
控制台上方的node.js脚本。记录
语句。然后通过CLI按原样使用代码运行
npm run prod
。它可能打印
5
,即
prod
末尾有一个空格字符。但是,如果下次将npm脚本更改为
“prod”:“设置NODE_ENV=prod&nodemon index”
(根据我之前的评论),然后
npm运行prod
,它应该再次打印正确的字符数,即
4