Nuxt构建报错:'createRequire'未被__vite-browser-external导出
解决Nuxt 3 + Vite 5构建时"createRequire"导出错误的方案
错误原因
说白了就是Vite的Node端内部代码被错误扯进浏览器构建流程里了。createRequire是Node.js特有的API,而__vite-browser-external是Vite用来标记浏览器环境下要排除的Node模块的标识,肯定不会导出这个方法。
解决步骤
- 清缓存重装依赖
先删掉node_modules、.nuxt、.output这几个文件夹,再重新装依赖:rm -rf node_modules .nuxt .output npm install - 适配兼容的Vite版本
Nuxt 3.13.x和Vite 5.2.x可能存在小兼容问题,试试把Vite降级到5.1.6(亲测和Nuxt 3.13.2适配没问题),修改package.json里的依赖:
改完重新装依赖就行。"vite": "^5.1.6" - 检查自定义Vite配置
如果项目里自己写了vite.config.ts或者在nuxt.config.ts里配了vite选项,别瞎把Node端模块加到浏览器构建的resolve配置里,比如别把node:module这类模块搞成非external的设置。 - 升级Nuxt到最新补丁版
试试把Nuxt更到3.13.x的最新补丁,说不定官方已经修了这个兼容bug:npm install nuxt@latest
关于你的疑问
你想的没错,正常情况下Vite自己会把Node端和浏览器端的代码隔离开,出现这问题大概率是版本兼容冲突或者缓存搞出来的代码引入错乱,不是Vite本身设计有问题。
内容的提问来源于stack exchange,提问作者Pimmesz
相关产品推荐
相关产品推荐

