我正在学习Node.js,这是我的第一个代码。
我使用下面的代码创建了一个名为server.js的文件
server.js
const express = require('express');
const dotenv = require('dotenv');
//load env vars
dotenv.config({ path: './config/config.env'});
const app = express();
const PORT = process.env.PORT || 5000;
app.listen(
PORT,
console.log(`Server running in ${process.env.NODE_ENV} mode on port ${PORT}`)
);
我的package.json文件中有此部分
package.json
"scripts": {
"start": "NODE_ENV=production node server",
"dev": "nodemon server"
},
下面是我的config.env文件的内容
NODE_ENV=development
PORT=5000
当我运行npm run dev
时,一切都很好,并且运行正常
当我运行npm start
来运行生产时,我得到下面的错误。
'NODE_ENV'未被识别为内部或外部命令、可操作程序或批处理文件。
如何解决此问题?我需要运行npm start
3条答案
按热度按时间bwntbbo31#
根据错误信息,您正在Windows中运行此程序。您需要使用
Set
来设置环境变量。但是,以这种方式设置环境变量的安全性较低,并且依赖于平台。换句话说,任何访问服务器文件系统的攻击者都可以通过修改package.json来设置任何环境变量。此外,如果您决定稍后将生产迁移到Linux主机,启动脚本将再次中断。
因此,最好的做法是通过主机配置设置来设置环境变量,不同的云提供商提供了不同的方法。
另外,您可能根本不需要使用npm来运行脚本,您可以直接在shell中调用
node server
。relj7zay2#
解决此问题的简单方法:
npm安装--跨环境保存开发
“start”:“跨环境NODE_ENV=生产节点服务器”
这意味着您不必担心平台
阅读更多:https://www.npmjs.com/package/cross-env
gudnpqoy3#
对于Windows:
对于UNIX和其他操作系统: