所以我在我的项目中安装了dotenv,我需要它的代码:
require("dotenv").config();
然后像这样使用我的变量:
app.listen(process.env.PORT, () => {
console.log(`Listening on ${process.env.ENDPOINT}:${process.env.PORT}`);
});
In .env:
ENDPOINT = "127.0.0.1";
PORT = 5000;
如果我把变量作为常量添加到js文件中,代码就可以正常工作,但是当我试图通过process.env访问变量时,我得到了:
events.js:291 throw er;//未处理的'error'事件^
错误:听EACCES:权限被拒绝5000;在Server.setupListenHandle [as _listen2](net.js:1299:21)在listenInCluster(net.js:1364:12)在Server.listen(net.js:1461:5)在Function.listen(C:\Users\Darkbound\Desktop\TouchScreenProject\SmartFactory\server\node_modules\express\lib\application.js:618:24)在Object.(C:\Users\Darkbound\Desktop\TouchScreenProject\SmartFactory\server\main.js:三十四:(5)模块。_compile(internal/modules/cjs/loader.js:1251:30)在Object.Module._extensions..js(internal/modules/cjs/loader. js:1272:(10)模块。load(internal/modules/cjs/loader.js:1100:32)在Function.Module._load(internal/modules/cjs/loader.js:九六二:(14)功能。executeUserEntryPoint [as runMain](internal/modules/run_main.js:七十二:12)在internal/main/run_main_module。js:十七:47在以下位置的服务器示例上发出“error”事件:at emitErrorNT(net.js:1343:8)at processTicksAndRejections(internal/process/task_queues.js:80:21){ code:'EACCES',
错误号:-4092,系统调用:'listen',地址:'5000;',端口:-1}
我试过使用其他端口,我得到同样的错误,在所有端口,我已经尝试了3000,3010,5000等。
如果另一个变量ENDPOINT
访问没有问题,那么如果我这样做:
const PORT = 5000;
app.listen(PORT, () => {
console.log(`Listening on ${process.env.ENDPOINT}:${PORT}`);
});
这个管用
**编辑解决:**我发现问题,像往常一样,在我提出问题后。问题是.env文件中每个变量的末尾都有;
。这是因为我从JavaScript中复制/粘贴了变量,只删除了const
,却忘记了;
2条答案
按热度按时间jjjwad0x1#
像往常一样,我在问完问题后就发现了问题。问题是我在
.env
文件中的每个变量的末尾都有;
。这是因为我从JavaScript中复制/粘贴了变量,只删除了const
,却忘记了;
5us2dqdw2#
在声明PORT时,只需从
.env
文件中删除;
。PORT=5000; ==> PORT = 5000