请教 webpack/vue 大神,有关 vue-cli 中 node 核心库的使用疑惑?

2020-07-21 18:46:27 +08:00
 JayLin1011

为什么在 vue-cli(webpack) 中 node 的部分核心模块无法使用,个人猜测是代码运行时是 node 或浏览器的区别或 node 版本的问题,但没有得到具体原因。

我可以在 vue-cli 构建的项目中使用 path.basename() 方法,却无法使用 path.parse(),因为该方法是 undefined 。

即使我设置了 webpack 的 node 选项的 path 的为 !!1mock 也无法顺利使用 path.parse() 方法,path 作为核心库部分 API 无法正常工作让我很疑惑。

想知道是 webpack 内部的 NodeStuffPlugin 插件和 NodeSourcePlugin 插件的影响,还是 node-libs-browser 不支持 Node.js 核心库 的相关 polyfill,同时有没有办法解决此问题。

1607 次点击
所在节点    Vue.js
4 条回复
ChanKc
2020-07-22 08:43:37 +08:00
浏览器应该没办法 polyfill path 的很多方法
构建和 ssr 阶段可以用 node 的模块
JayLin1011
2020-07-22 14:24:46 +08:00
@ChanKc 嗯嗯,我选择了正则作为路径解析的备选方案,只是不明白 weboack 对于 node 核心库和浏览器环境的兼容关系的处理和配置,目前来看确实没有对应的 mock lib 。
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
JayLin1011
2020-07-23 23:29:53 +08:00
@sodatea 好的呢。估计轮子缔造者们都是正则起手,基于兼容性考虑不会太依赖一些工具模块。虽然新的 node 也在贴近浏览器生态,但并没必要更新。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692003

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX