【问题标题】:Trying to change the environment variable in node.js from the terminal but its value is always undefined尝试从终端更改 node.js 中的环境变量,但其值始终未定义
【发布时间】:2021-06-29 07:12:22
【问题描述】:

我是后端开发的新手,我有以下使用 express 的 JS 代码

const express = require('express');
const app = express();
const port = process.env.PORT || '3000';
app.listen(port, ()=> console.log(`Listening on port ${port}...`));

我正在尝试使用set PORT=5000(我在 Windows 上)将环境变量 process.env.PORT 更改为与终端不同的端口,但无论何时运行,env.PORT 中的值始终未定义,难道我做错了什么?另外,我正在使用 VS Code。

【问题讨论】:

  • 你是如何运行你的代码的?您是在 vscode 中按“播放”还是在终端中执行 node yourfile.js(在您调用 set 之后立即)?
  • 你实际上可以运行这个`node index.js -port 5000`。它将获取当前环境中分配的端口。
  • 在调用 set PORT=5000 后,我正在使用终端中的“node index.js”运行我的代码。

标签: javascript node.js express visual-studio-code backend


【解决方案1】:

参考您的代码示例,您需要这样的内容:

var express = require("express");
var app = express();

// sets port 5000 to default or unless otherwise specified in the environment
app.set('port', process.env.PORT || 5000);

app.get('/', function(req, res){
    res.send('hello world');
});

// Only works on 3000 regardless of what I set environment port to or how I set
// [value] in app.set('port', [value]).
// app.listen(3000);
app.listen(app.get('port'));

process.env 是对您的环境的引用,因此您必须在那里设置变量。

SET NODE_ENV=development

【讨论】:

  • 这应该可以工作,您可以使用dotenv(npmjs.com/dotenv) 更进一步,它将在运行时将.env 文件中的任何内容注入代码中。
  • 我目前正在上一门课程,我只是跟随讲师,在课程中,讲师一直在做我想做的事情,但是每当我尝试更改任何 env 变量值时运行代码之前的终端,它不会改变,只是在我尝试记录值时给出 undefined。
【解决方案2】:

我正在使用下面的脚本来运行我的 Windows 节点应用程序。

SET NODE_ENV=development& node app.js

【讨论】:

  • 遗憾的是,当我尝试运行此行时,它给了我一个错误。
  • 我在我的 npm 脚本中使用了它。你能附上你如何使用的代码吗?
猜你喜欢
  • 2018-12-11
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
相关资源
最近更新 更多