webpack react process.env 始终为空(Windows 10)

IT技术 node.js reactjs npm webpack
2021-03-26 04:01:57

我已经阅读了堆栈溢出中的所有文章以及来自 google 搜索的大约 200 多篇文章,我一生都无法理解 process.env。无论我做什么,它始终是一个空对象。

const path = require("path");
const webpack = require('webpack');

module.exports = {
    entry: {
        search: './src/search/search_index.js',
        // search: './src/search/search_index.js'
    },
    output: {
        path: path.join(__dirname, "../website/public/javascript/react"),
        publicPath: '/',
        filename: "[name].bundle.js"
    },
    module: {
        loaders: [{
            exclude: /node_modules/,
            loader: 'babel',
            query: {
            presets: ['react', 'es2015', 'stage-1']
        }
    }]
    },
    resolve: {
        extensions: ['', '.js', '.jsx']
    },
    devServer: {
        historyApiFallback: true,
        contentBase: './'
    },
    plugins: [
        new webpack.DefinePlugin({
            "process.env" : {
                'NODE_ENV': '"production"'
            }
        })
    ]
};

"scripts": {
    "start": "webpack-dev-server --inline --hot --content-base src/search",
    "test": "mocha --compilers js:babel-core/register --require ./test/test_helper.js --recursive ./test",
    "test:watch": "npm run test -- --watch"
}

console.log(process.env); // 从正在运行的应用程序中的渲染方法开始 "npm start"

总是返回 {}

我试图在我的构建中将 NODE_ENV 设置为生产,并且 %NODE_ENV% 显示生产的运气为零,但不管我在控制台中收到关于它在较慢的构建上运行以使用 NODE_ENV 生产的警告消息。

为了尝试解开正在发生的事情,我只是想看看我的应用程序在 process.env 中得到了什么,它是一个空对象。然后我尝试使用defineplugin对其进行硬编码,以再次测试发生了什么,结果是相同的。

我的头撞到了这个大约 3 个小时。任何帮助表示赞赏。

1个回答

DefinePlugin您正在使用配置process.env.NODE_ENV将代码中出现的表达式替换为您配置的任何值 - 它不会触及对 的引用process.env,因为您没有告诉它使用该确切表达式执行任何操作 - 您正在使用的配置只是替换共享公共根的多个表达式的简写。

Webpack 检测到您正在引用一个全局process变量,并且正在node-libs-browser注入process模拟,如您所见,它定义了一个空对象。env

您可以使用nodeWebpack 配置来控制它。添加node: {process: false}到您的配置将禁用模拟的注入process

我使用从配置文件中删除的插件进行了尝试,结果相同。
2021-05-23 04:01:57
它检测到您正在引用process全局并注入模拟对象 - 默认情况下启用此功能。
2021-05-31 04:01:57
当我将 process 设置为 false 时,我得到了这个 error process is not defined
2021-06-09 04:01:57
节点 Webpack 配置链接现在是webpack.js.org/configuration/node/#node
2021-06-16 04:01:57
您答案中的节点 Webpack Config 链接似乎已失效。
2021-06-20 04:01:57