为什么在 vue-cli(webpack) 中 node 的部分核心模块无法使用,个人猜测是代码运行时是 node 或浏览器的区别或 node 版本的问题,但没有得到具体原因。
我可以在 vue-cli 构建的项目中使用 path.basename()
方法,却无法使用 path.parse()
,因为该方法是 undefined 。
即使我设置了 webpack 的 node 选项的 path 的为 !!1
或 mock
也无法顺利使用 path.parse()
方法,path 作为核心库部分 API 无法正常工作让我很疑惑。
想知道是 webpack 内部的 NodeStuffPlugin 插件和 NodeSourcePlugin 插件的影响,还是 node-libs-browser 不支持 Node.js 核心库 的相关 polyfill,同时有没有办法解决此问题。
1
ChanKc 2020-07-22 08:43:37 +08:00 via Android
浏览器应该没办法 polyfill path 的很多方法
构建和 ssr 阶段可以用 node 的模块 |
2
JayLin1011 OP @ChanKc 嗯嗯,我选择了正则作为路径解析的备选方案,只是不明白 weboack 对于 node 核心库和浏览器环境的兼容关系的处理和配置,目前来看确实没有对应的 mock lib 。
|
3
sodatea 2020-07-23 22:26:55 +08:00
node-libs-browser 里引用的 path-browserify 版本非常老,没有 parse 这个方法
https://github.com/browserify/path-browserify/blob/v0.0.1/index.js |
4
JayLin1011 OP @sodatea 好的呢。估计轮子缔造者们都是正则起手,基于兼容性考虑不会太依赖一些工具模块。虽然新的 node 也在贴近浏览器生态,但并没必要更新。
|