我正在运行一个在 Node 中构建的 Express 服务器,并希望使用 app.listen 将其绑定到我的本地主机,这是我的 server.js 文件中的命令。
"use strict";
const app = require("./app");
const { PORT } = require("./config");
console.log(PORT)
app.listen(PORT, function(err){
if (err) console.log("Error in server setup")
//no error being outputted here.
console.log("Server listening on Port", PORT);
})
配置中需要的端口有条件地设置为3001,并在
app.listen
的回调中打印出来,这意味着没有(err)被捕获。
但是我在终端中收到的错误如下:
node:internal/process/promises:288
triggerUncaughtException(err, true /* fromPromise */);
^
Error: getaddrinfo ENOTFOUND base
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:108:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'base'
}
据我了解,我们只需将端口号传递给
app.listen()
即可将其绑定到本地主机,但这个错误我不确定。非常感谢您的帮助。我见过这个问题的一些变体,但没有遇到过 Express 服务器,所以希望你能帮助我。
尝试搜索各种解决方案并将主机参数添加到 app.listen() 尝试更改端口号,还尝试对端口号进行硬编码,而不是在配置中动态选择它。
在没有看到包含内容的情况下很难肯定地说,但通过一些小的更改,我能够使其工作。
我使用 dotenv 并将 PORT 卡在环境变量中。有一个文件名.env,里面有PORT=3000。
希望这对您有帮助:
"use strict";
const express = require("express");
var path = require("path");
require('dotenv').config();
const PORT = process.env.PORT;
console.log(PORT)
const app = express();
app.set("port", PORT || 3000);
app.listen(PORT, function(err){
if (err) console.log("Error in server setup")
//no error being outputted here.
console.log("Server listening on Port", PORT);
})