V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JayLin1011
V2EX  ›  Vue.js

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

  •  
  •   JayLin1011 ·
    jay-lin1110 · 2020-07-21 18:46:27 +08:00 · 1804 次点击
    这是一个创建于 1611 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为什么在 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,同时有没有办法解决此问题。

    4 条回复    2020-07-23 23:29:53 +08:00
    ChanKc
        1
    ChanKc  
       2020-07-22 08:43:37 +08:00 via Android
    浏览器应该没办法 polyfill path 的很多方法
    构建和 ssr 阶段可以用 node 的模块
    JayLin1011
        2
    JayLin1011  
    OP
       2020-07-22 14:24:46 +08:00
    @ChanKc 嗯嗯,我选择了正则作为路径解析的备选方案,只是不明白 weboack 对于 node 核心库和浏览器环境的兼容关系的处理和配置,目前来看确实没有对应的 mock lib 。
    sodatea
        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
    JayLin1011
        4
    JayLin1011  
    OP
       2020-07-23 23:29:53 +08:00
    @sodatea 好的呢。估计轮子缔造者们都是正则起手,基于兼容性考虑不会太依赖一些工具模块。虽然新的 node 也在贴近浏览器生态,但并没必要更新。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1224 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:56 · PVG 01:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.