NuxtJS引入含cjs/mjs的第三方依赖编译报错该如何解决?
问题原因
- 配置的
.cjs文件匹配规则存在字符错误:你写的test: /\.сjs$/中,前缀的с是西里尔字符,并非标准拉丁字母c,导致规则完全无法匹配到真实的.cjs后缀文件,Webpack找不到对应处理逻辑就会抛出解析失败错误。 - Nuxt 2默认使用的Webpack 4没有内置对
.cjs扩展名的默认处理逻辑,即使规则写对,也需要明确告知Webpack如何识别这类文件。 - 你没有将
.cjs后缀加入Webpack的可解析扩展名列表,也可能导致解析优先级异常,触发加载错误。
解决方案
按照如下步骤修改nuxt.config.js配置即可:
- 修正
.cjs的匹配规则,同时可以将.mjs和.cjs的处理规则合并,减少冗余配置 - 给Webpack的
resolve.extensions配置追加.cjs后缀,提升文件解析优先级 - 原有
transpile数组中的@glazed相关依赖配置保持不变,避免转译遗漏
修正后的extend配置参考:
extend(config) { // 其他原有配置保持不变 config.module.rules.push({ test: /\.(mjs|cjs)$/, include: /node_modules/, type: "javascript/auto", }) // 追加cjs后缀到可解析列表 config.resolve.extensions.push('.cjs') }
修改配置后重启Nuxt服务即可正常编译。
内容的提问来源于stack exchange,提问作者Narnik Gamarnik
相关产品推荐
相关产品推荐

