Nuxt项目启动时nuxt-i18n引发FATAL构建错误问题求助
Nuxt构建时nuxt-i18n路由插件语法报错修复
问题现象
启动Nuxt项目时触发FATAL级别构建错误,错误定位到.nuxt/nuxt-i18n/plugin.routing.js文件,提示模块解析失败,出现未识别的token。
具体编译报错
ERROR in ./.nuxt/nuxt-i18n/plugin.routing.js 222:47 Module parse failed: Unexpected token (222:47) File was processed with these loaders: * ./node_modules/babel-loader/lib/index.js You may need an additional loader to handle the result of these loaders. | localeLocation: this.localeLocation, | // @ts-ignore > req: process.server ? this.$root.context?.req || this.$ssrContext?.req : null, | route: this.$route, | router: this.$router, @ ./.nuxt/index.js 17:0-84 259:13-47 260:10-44 @ ./.nuxt/client.js @ multi ./.nuxt/client.js
错误调用栈
FATAL Nuxt build error at WebpackBundler.webpackCompile (node_modules\@nuxt\webpack\dist\webpack.js:2127:21) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async WebpackBundler.build (node_modules\@nuxt\webpack\dist\webpack.js:2076:5) at async Builder.build (node_modules\@nuxt\builder\dist\builder.js:327:5) at async Object.run (node_modules\@nuxt\cli\dist\cli-build.js:110:7) at async NuxtCommand.run (node_modules\@nuxt\cli\dist\cli-index.js:413:7)
根因说明
报错行使用了ES2020标准的可选链操作符(?.),当前项目的Babel loader默认没有转译该语法,同时nuxt-i18n输出的文件没有做低版本语法兼容,导致Webpack解析失败,和服务端路由业务代码无关。删除.nuxt缓存、重装node_modules不会修改构建配置或依赖版本,因此无法解决问题。
修复方案
按优先级选择以下任意一种方案即可:
- 降级nuxt-i18n到兼容版本(最快生效)
7.3.0及以上版本的Nuxt2适配版nuxt-i18n存在未转译可选链语法的问题,直接锁定依赖到7.2.3版本即可:
安装完成后重新执行构建命令即可。npm uninstall @nuxtjs/i18n npm install @nuxtjs/i18n@7.2.3 --save - 补充Babel转译配置(保留高版本nuxt-i18n)
先安装可选链语法对应的Babel转译插件:
随后修改项目根目录的npm install @babel/plugin-proposal-optional-chaining --save-devnuxt.config.js,添加对应构建配置:export default { // 其余已有配置保持不变 build: { babel: { plugins: ['@babel/plugin-proposal-optional-chaining'] }, transpile: ['@nuxtjs/i18n'] } } - 升级Node运行时版本
如果当前本地Node版本低于14.x,可选链语法无法被低版本Node原生识别,直接升级Node到14.x/16.x/18.x的长期支持版本,也可解决该语法兼容问题。
内容的提问来源于stack exchange,提问作者RostySlav_
相关产品推荐
相关产品推荐

