Vite构建失败,“emitter”由emitter导入?commonjs-external,但无法解析 - 将其视为外部依赖项

Emi*_*mil 0 vuejs3 vue-composition-api vite

首先链接到问题

\n

https://stackblitz.com/edit/vue3-script-setup-with-vite-mx4xx2?file=package.json

\n

要重现问题运行命令

\n
npm run build\n
Run Code Online (Sandbox Code Playgroud)\n

然后你会在日志中得到错误

\n
\n

转换 (119) node_modules/lodash/_hashDelete.js\'emitter\' 由 emitter?commonjs-external 导入,但无法解析 \xe2\x80\x93\n将其视为外部依赖项

\n
\n

尝试运行 npm runserve 会出现控制台错误

\n
\n

未捕获的类型错误:无法解析模块说明符“发射器”。\n相对引用必须以“/”、“./”或“../”开头。

\n
\n

我知道这个错误是由 package 引起的geostyler-sld-parser,特别是 App.vue 中的这一行

\n
const sldParser = new SLDParser()\n
Run Code Online (Sandbox Code Playgroud)\n

我需要这个包并成功运行构建/服务,有人知道如何正确配置 vite 吗?我尝试了一些插件,但到目前为止没有任何效果。

\n

Emi*_*mil 5

好的,问题出在 geostyler-sld-parser 使用的依赖流 v0.0.2 上。

为了修复它,我添加了发射器的别名,以便流包正确解析发射器。

resolve: {
    alias: [
      {
        emitter: require.resolve('emitter-component'),
      },
    ]
Run Code Online (Sandbox Code Playgroud)

我考虑的另一个解决方案是patch-package在节点模块中使用模块并手动修复依赖关系。