webpack react process.env总是空的(windows 10)

Omi*_*nus 9 node.js npm reactjs webpack

我已经阅读了堆栈溢出处的所有文章以及来自谷歌搜索的大约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"
}
Run Code Online (Sandbox Code Playgroud)

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

总是回来 {}

我正在尝试将NODE_ENV设置为我的构建生产并且没有运气%NODE_ENV%显示生产但是无论我在控制台中得到关于它在较慢的构建上运行以使用NODE_ENV生产的警告消息.

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

现在已经对我的头撞了大约3个小时了.任何帮助表示赞赏.

Jon*_*nan 7

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

Webpack检测到您正在引用一个全局process变量,并从node-libs-browser注入process模拟,正如您所看到的那样定义了一个空对象.env

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

  • 你先生应该喝啤酒!非常感谢!浪费了很多时间. (2认同)
  • 当我将process设置为false时,我得到了这个“错误过程未定义”。 (2认同)