Heroku 以节点_ENV作为参数运行npm
如何将Heroku 以节点_ENV作为参数运行npm,heroku,npm,Heroku,Npm,如何将NODE\u ENV传递到npm run命令作为参数 示例package.json文件: NODE_ENV=8080 ... "script": { "start": "http-server --port $NODE_ENV" // or something similar that } ... 请注意,NODE\u ENV由另一个进程设置,只能从中读取npm运行 我在将我的应用程序部署到he
NODE\u ENV
传递到npm run
命令作为参数
示例package.json
文件:
NODE_ENV=8080
...
"script": {
"start": "http-server --port $NODE_ENV" // or something similar that
}
...
请注意,NODE\u ENV
由另一个进程设置,只能从中读取npm运行
我在将我的应用程序部署到heroku中时遇到了这个问题(他们将自动设置NODE\u ENV
)。我在heroku上找到了这个问题的另一个解决方案,但我仍然想知道是否有办法将NODE_ENV
传递到npm run
命令中。您试图接受双引号中字符串中的值,这是错误的。您可以通过以下方式访问:
备选案文1:
你需要连接两个字符串
NODE_ENV=8080
"script": {
"start": "http-server --port "+NODE_ENV
}
备选案文2:
你可以用
在选项2中,NODE_ENV将替换为变量的实际值您试图接受双引号中字符串内的值,这是错误的。您可以通过以下方式访问:
备选案文1:
你需要连接两个字符串
NODE_ENV=8080
"script": {
"start": "http-server --port "+NODE_ENV
}
备选案文2:
你可以用
在选项2中,节点_ENV将替换为变量的实际值环境变量可以直接使用,正如您尝试的那样:
{
“脚本”:{
“开始”:“echo$FOO”
}
}
如果运行此启动脚本,warn start
和npm run start
都将回显FOO
环境变量的值。我想你还有两个问题
首先,您试图使用环境变量NODE_ENV
设置应用程序侦听的端口,不NODE\u ENV
其次,您试图在包.json
中设置一个环境变量,但它将覆盖Heroku设置的值。相反,请考虑在开发中使用<代码> .ev文件。其内容可以如下所示:
PORT=8080
您将需要工具来加载此文件并填充您的环境。这是一个流行的选择。注意,您的<代码> .Env文件不应提交,因此也考虑将其添加到<代码> > GiTigGORE ./P>
在您的开发环境中还有其他方法来设置环境变量,如果您愿意,其中任何一种都可以使用
综上所述,您的包.json
应该包含如下内容
{
“脚本”:{
“开始”:“http服务器--端口$port”
}
}
可以直接使用环境变量,正如您尝试的那样:
{
“脚本”:{
“开始”:“echo$FOO”
}
}
如果运行此启动脚本,warn start
和npm run start
都将回显FOO
环境变量的值。我想你还有两个问题
首先,您试图使用环境变量NODE_ENV
设置应用程序侦听的端口,不NODE\u ENV
其次,您试图在包.json
中设置一个环境变量,但它将覆盖Heroku设置的值。相反,请考虑在开发中使用<代码> .ev文件。其内容可以如下所示:
PORT=8080
您将需要工具来加载此文件并填充您的环境。这是一个流行的选择。注意,您的<代码> .Env文件不应提交,因此也考虑将其添加到<代码> > GiTigGORE ./P>
在您的开发环境中还有其他方法来设置环境变量,如果您愿意,其中任何一种都可以使用
综上所述,您的包.json
应该包含如下内容
{
“脚本”:{
“开始”:“http服务器--端口$port”
}
}
请注意,这是package.json
文件,不是javascript文件,因此您不能在此处编写javascript代码。因此,concat字符串或模板文本无效。您是否已将NODE_ENV添加到环境变量中?由于结构相同,我尝试使用不同的变量请注意,这是package.json
文件,而不是javascript文件,因此不能在此处编写javascript代码。因此,concat字符串或模板文本无效。您是否已将NODE_ENV添加到环境变量中?因为结构是相同的,我尝试了不同的变量。是否接受任何工具?使用第三方工具是否有问题?是否接受任何工具?使用第三方工具有问题吗?我的错误是认为端口值是由$NODE\u ENV
而不是$port
设置的。因此,使用“http服务器--port$port”
而不是“http服务器--port$NODE_ENV”
可以解决我的问题。谢谢。我的错误是认为端口值是由$NODE\u ENV
而不是$port
设置的。因此,使用“http服务器--port$port”
而不是“http服务器--port$NODE_ENV”
可以解决我的问题。非常感谢。