Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从webpack.config.js文件访问环境变量?_Javascript_Node.js_Webpack - Fatal编程技术网

Javascript 如何从webpack.config.js文件访问环境变量?

Javascript 如何从webpack.config.js文件访问环境变量?,javascript,node.js,webpack,Javascript,Node.js,Webpack,我尝试通过process.env.env_name从webpack.config.js访问环境变量, 虽然我可以通过webpack.config.js中的process.env.env_名称在本地访问my.env中的环境变量,但我无法访问config/default.js文件中声明的环境变量。有什么想法吗?—— 选项1-网页包文件上的变量 您可以在脚本上传入环境变量: webpack --env.MY_VARIABLE=VALUE --env.MY_OTHER_VARIABLE=OTHER_VA

我尝试通过process.env.env_name从webpack.config.js访问环境变量, 虽然我可以通过webpack.config.js中的process.env.env_名称在本地访问my.env中的环境变量,但我无法访问config/default.js文件中声明的环境变量。有什么想法吗?——

选项1-网页包文件上的变量 您可以在脚本上传入环境变量:

webpack --env.MY_VARIABLE=VALUE --env.MY_OTHER_VARIABLE=OTHER_VALUE
并访问它:

... module.exports=env=>{ //在此处使用环境: console.log'MY_VARIABLE:',env.MY_VARIABLE;//'VALUE' ... }; 选项2-应用程序上的变量 或者您可以使用一些包从env文件中读取它,如

运行npm i dotenv

将其导入您的webpack.config.js文件:

//如果.env与webpack.config.js位于同一文件夹中 var dotenv=require'dotenv' //如果它位于其他地方 var dotenv=require'dotenv'.config{path:'/full/custom/path/to/your/env/vars'}; //同上,但具有抽象性 var dotenv=require'dotenv'.config{path:uu dirname+'/.env'}; 最后:

// define a new plugin on your webpack
plugins: [
    ...
    new webpack.DefinePlugin({

        // try:
        "process.env": dotenv.parsed

        // or:
        'process.env': JSON.stringify(dotenv.config().parsed)
    }),
]

现在,您可以将应用程序中的变量读取为process.env.MY_变量,该变量在.env.

选项1-网页包文件中的变量中定义 您可以在脚本上传入环境变量:

webpack --env.MY_VARIABLE=VALUE --env.MY_OTHER_VARIABLE=OTHER_VALUE
并访问它:

... module.exports=env=>{ //在此处使用环境: console.log'MY_VARIABLE:',env.MY_VARIABLE;//'VALUE' ... }; 选项2-应用程序上的变量 或者您可以使用一些包从env文件中读取它,如

运行npm i dotenv

将其导入您的webpack.config.js文件:

//如果.env与webpack.config.js位于同一文件夹中 var dotenv=require'dotenv' //如果它位于其他地方 var dotenv=require'dotenv'.config{path:'/full/custom/path/to/your/env/vars'}; //同上,但具有抽象性 var dotenv=require'dotenv'.config{path:uu dirname+'/.env'}; 最后:

// define a new plugin on your webpack
plugins: [
    ...
    new webpack.DefinePlugin({

        // try:
        "process.env": dotenv.parsed

        // or:
        'process.env': JSON.stringify(dotenv.config().parsed)
    }),
]


现在,您可以将应用程序中的变量读取为process.env.MY_变量,该变量在.env中定义。

您可以像这样使用webpack.DefinePlugin

plugins: [
        new webpack.DefinePlugin({
            'process.env': {
                'NODE_ENV': JSON.stringify('development'),
                'BASE_URL': JSON.stringify('http://localhost:5000/')
            }
        })
    ],
 process.env.BASE_URL
然后像这样读入js代码

plugins: [
        new webpack.DefinePlugin({
            'process.env': {
                'NODE_ENV': JSON.stringify('development'),
                'BASE_URL': JSON.stringify('http://localhost:5000/')
            }
        })
    ],
 process.env.BASE_URL

您可以像这样使用webpack.DefinePlugin

plugins: [
        new webpack.DefinePlugin({
            'process.env': {
                'NODE_ENV': JSON.stringify('development'),
                'BASE_URL': JSON.stringify('http://localhost:5000/')
            }
        })
    ],
 process.env.BASE_URL
然后像这样读入js代码

plugins: [
        new webpack.DefinePlugin({
            'process.env': {
                'NODE_ENV': JSON.stringify('development'),
                'BASE_URL': JSON.stringify('http://localhost:5000/')
            }
        })
    ],
 process.env.BASE_URL