记一次Nuxt3从v3-rc版升级到v3正式版后报错问题。
发布于2023-10-17 15:42 阅读670次 记一次Nuxt3从v3.0.0-rc.x版升级到v3.x正式版后,项目npm run dev模式下一切正常,只有在npm run build时报错,报错内容如下:
```
Nuxt 3.1.1 with Nitro 2.1.1
Error: Error: Cannot find module string_decoder/
imported from file:///D:/nuxt_app/node_modules,
file:///D:/nuxt_app/node_modules/nuxt/node_modules,
file:///D:/nuxt_app/node_modules/nitropack/node_modules,
file:///D:/nuxt_app/, file:///D:/nuxt_app/node_modules/_index.js,
file:///D:/nuxt_app/node_modules,
file:///D:/nuxt_app/node_modules/nuxt/,
file:///D:/nuxt_app/node_modules/nuxt/node_modules/_index.js,
file:///D:/nuxt_app/node_modules/nuxt/node_modules,
file:///D:/nuxt_app/node_modules/nitropack/,
file:///D:/nuxt_app/node_modules/nitropack/node_modules/_index.js,
file:///D:/nuxt_app/node_modules/nitropack/node_modules undefined
```
分析报错结果,应该是string_decoder找不到,已确认组件是依赖组件,并确认已正常安装,经排查是 .output/server/node_modules/readable_stream/lib/_stream_readable.js 170行引入string_decoder时出错。
```
if (options.encoding) {
if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
this.decoder = new StringDecoder(options.encoding);this.encoding = options.encoding;
}
```
尝试删除.nuxt,.output,node_modules等文件夹,重新刷新package-lock.json,清除npm缓存等一系列操作,问题仍然得不到解决,由此分析判断为组件版本冲突,逐一注释引入组件调用文件,最后找到引起该问题的组件为mysql v2.18.1,删除后一切正常,可是项目又必须要使用mysql连接组件,最终找到mysql2 v3.1.0来替代,且连接程序及mysql数据库操作语法不需要做任何修改,完美解决问题。
分享至此,以免更多的小伙伴踩坑。