我在开发时是否必须自行设置process.env.NODE_ENV?当我拥有构建文件夹时,节点是否不会将.env设置为生产,而在本地环境中时节点是否将其设置为开发?我印象中很多图书馆都将其用作优化工具
例如在我的app.js文件中,console.log代码显示为未定义
console.log(process.env.NODE_ENV)
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const postsRouter = require('./routes/Post_Route');
const path = require("path")
// parse body on every request //
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
//Routes
app.use('/api/posts', postsRouter);
// Serve up static assets (usually on heroku)
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(__dirname, 'client', 'build')));
}
console.log(process.env.NODE_ENV)
if (process.env.NODE_ENV === 'production') {
console.log(`Mongoose is in production === ${process.env.NODE_ENV} mongo uri is ${process.env.MONGO_URI_PROD}`)
// connect DB
当我在.env文件中设置NODE.ENV时,我将其视为开发中,是否要在开发中手动进行设置,然后在heroku中将NODE_ENV设置为生产中?
答案 0 :(得分:1)
在package.json中
{
...
"scripts": {
"start": "NODE_ENV=production node ./app"
}
...
}
答案 1 :(得分:1)
足够遗憾的是。没有像“ node script.js --production”这样的命令。相反,只需在Linux系统export NODE_ENV=production
上运行此命令,这将为您带来好处。另外,您可以将启动命令更改为NODE_ENV=production node script.js
,这将使您可以进行生产测试。
答案 2 :(得分:0)
NODE_ENV=production node script.js
应该可以工作。
但是在Windows上不起作用。因此,我建议使用cross-env之类的程序包使其在所有平台上均可工作。
{
"scripts: {
"start": "cross-env NODE_ENV=production node script.js"
}
}
答案 3 :(得分:0)
您还可以使用DefinePlugin在Webpack配置中对其进行设置。在Windows上也可以使用
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"',
}),
],
答案 4 :(得分:-1)
您需要在服务器中定义环境变量。如果您使用的是Linux,请使用printenv进行检查。如果变量不在列表中,则需要定义
答案 5 :(得分:-1)
我认为我会说npm install dotenv
文档位于https://www.npmjs.com/package/dotenv
然后将其导入您的输入脚本文件中
import dotenv from "dotenv"
并且尽早调用dotenv.config()
,这会将所有变量加载到.env
文件中。