【问题标题】:process.env.NODE_ENV is undefined in my server file [duplicate]process.env.NODE_ENV 在我的服务器文件中未定义[重复]
【发布时间】:2020-03-06 03:55:03
【问题描述】:

我在开发时是否必须自己设置 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 上将其设置为生产?

【问题讨论】:

    标签: javascript node.js reactjs


    【解决方案1】:

    在 package.json 中

    {
      ...
      "scripts": {
        "start": "NODE_ENV=production node ./app"
      }
      ...
    }
    

    【讨论】:

      【解决方案2】:

      很遗憾,是的。没有像“node script.js --production”这样的命令。相反,只需在 Linux 系统 export NODE_ENV=production 上运行它即可。或者,您可以将启动命令更改为 NODE_ENV=production node script.js,这样您就可以进行生产测试了。

      【讨论】:

        【解决方案3】:

        NODE_ENV=production node script.js 应该可以工作。

        但它不适用于 Windows。所以我建议使用像cross-env 这样的包来让它在所有平台上都可以工作。

        {
          "scripts: {
            "start": "cross-env NODE_ENV=production node script.js"
          }
        }
        

        【讨论】:

          【解决方案4】:

          你也可以使用 DefinePlugin 在你的 webpack 配置中设置它。也适用于 Windows

          plugins: [
              new webpack.DefinePlugin({
                'process.env.NODE_ENV': '"production"',
              }),
            ],
          

          【讨论】:

            【解决方案5】:

            您需要在 server.xml 中定义环境变量。如果您使用的是 linux,请检查 printenv 。如果变量不在列表中,则需要定义

            【讨论】:

              【解决方案6】:

              在我看来我会说npm install dotenv

              文档地址:https://www.npmjs.com/package/dotenv

              然后在你的入口脚本文件中导入它 import dotenv from "dotenv" 并尽早调用dotenv.config() 这将加载您的.env 文件中的所有变量。

              【讨论】:

                猜你喜欢
                • 2021-11-04
                • 2022-01-05
                • 2012-06-21
                • 1970-01-01
                • 1970-01-01
                • 2014-08-20
                • 2016-06-10
                • 2020-10-03
                • 1970-01-01
                相关资源
                最近更新 更多