process.env.NODE_ENV可以但是process.env.xxx别的就不行就会报
Can't resolve 'process/browser'
这个报错信息。看了一下process.env.NODE_ENV这个是webpack编译的时候加入的,而process.env.xxx是用new webpack.DefinePlugin定义的全局变量。
所以就在编译的之后,因为我这个库要在浏览器上执行,所以没有process这个模块。
但是node_modules的方式就可以,所以是先编译,然后不走本地的方式就可以,先编译里面没有这个变量,也能编译成功,然后用的是编译之后的。
那就看编译之后的和直接使用源码有啥区别
解决办法一:
定义的全局变量不要带process,这样就不会误认为是process,而浏览器环境没有这个变量。
解决方案二
在webpack.prod.js中也定义这个变量。
分析问题原因
为什么会用错呢,是因为我在开发过程中,把这个插件作用理解做了,这个插件是编译阶段替换变量的,而不是定义全局变量。
因为尝试window['process.env.JSBRIDGE_MOCK_DATA_PATH']这样是取不到的,所以判断这个插件不是挂载到全局变量上的。