You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js集成i18next-parser遇import模块外语法错误求助

解决i18next-parser在Next.js中运行gulpfile的语法错误问题

错误原因

报错SyntaxError: Cannot use import statement outside a module的核心原因是:Node.js执行gulp脚本时,默认将gulpfile.js识别为CommonJS模块,不支持ES模块的import语法。你尝试的Next.js动态导入是用于React组件的SSR兼容方案,不适用于gulp这类构建脚本,因此无效。

解决方案

方案1:改用CommonJS语法(推荐,无需额外配置)

直接将gulpfile的ES模块语法替换为CommonJS格式:

const gulp = require('gulp');
const { gulp: i18nextParser } = require('i18next-parser');

exports.i18next = async function() {
  return gulp
    .src('./**')
    .pipe(
      new i18nextParser({
        locales: ['en', 'nl'],
        output: './i18n/locales/$LOCALE/$NAMESPACE.json',
      })
    )
    .pipe(gulp.dest('./'));
}

方案2:配置Node.js识别ES模块

如果坚持使用ES模块语法,可通过以下两种方式实现:

  • 方式一:重命名gulpfile
    将gulpfile.js改名为gulpfile.mjs,Node.js会自动将后缀为.mjs的文件视为ES模块。
  • 方式二:修改package.json
    在项目根目录的package.json中添加"type": "module"配置,这样所有.js文件都会被识别为ES模块:
    {
      "type": "module"
    }
    
    注意:此配置会影响项目中所有JS文件的模块解析规则,如果项目存在其他CommonJS格式的代码,需要同步调整为ES模块语法。

运行验证

修改完成后,直接执行命令即可生成解析文件:

npm run gulp i18next

内容的提问来源于stack exchange,提问作者Sabbir Zzaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:15:40