为了账号安全,请及时绑定邮箱和手机立即绑定

Webpack中设置环境变量为何要用JSON.stringify赋值?

Webpack中设置环境变量为何要用JSON.stringify赋值?

弑天下 2018-12-11 21:29:03
先上代码:const merge = require('webpack-merge');const UglifyJSPlugin = require('uglifyjs-webpack-plugin');const common = require('./webpack.common.js');const webpack = require('webpack');module.exports = merge(common, {    mode: 'production',    devtool: 'source-map',    plugins: [       new UglifyJSPlugin({            sourceMap: true        }),       // 问题就出在这里,**为何不直接赋值一个字符串"production",而要用JSON这样转成字符串?**        new webpack.DefinePlugin({           'process.env.NODE_ENV': JSON.stringify('production'),        })    ] });问题就出在这,为何不直接赋值一个字符串"production",而要用JSON这样转成字符串?      new webpack.DefinePlugin({          'process.env.NODE_ENV': JSON.stringify('production'),       })前端菜鸟去看官网的时候遇到的一个问题,这里是链接。求解一下,为何需要这样做?
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

假设有如下代码

if (process.env.NODE_ENV === 'production') {    console.log('production');
}

这样写的话,

new webpack.DefinePlugin({    'process.env.NODE_ENV': 'production',
})

会编译成:

// production是一个变量,并不是我们想象中的字符串if (production === 'production') {    console.log('production');
}

所以,需要这么写

new webpack.DefinePlugin({    'process.env.NODE_ENV': JSON.stringify('production'),
})

或者这样

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


查看完整回答
反对 回复 2018-12-11
  • 1 回答
  • 0 关注
  • 499 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号