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

创建Yeoman Generator时require/import导入报错求助

解决Yeoman Generator v7+ 模块加载冲突问题

问题根源

yeoman-generator 从v7版本开始改为纯ES模块发布,而你的项目默认是CommonJS模块规范(package.json未声明type: "module"),导致require()加载ES模块报错,直接用import又因未声明模块类型失败。


方案一:将项目转为ES模块

  1. 修改package.json,添加"type": "module"字段:
{
  "name": "generator-test",
  "version": "1.0.0",
  "type": "module", // 新增该字段
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "yeoman-generator": "^7.1.0"
  }
}
  1. 修改index.js,将CommonJS导出改为ES模块导出:
import Generator from "yeoman-generator";

export default class extends Generator {
  initializing() {
    this.log("working!");
  }
};

方案二:保持CommonJS,使用动态import

如果不想修改项目模块类型,可利用CommonJS支持的动态import()(返回Promise)调整代码:

module.exports = class extends (await import("yeoman-generator")).default {
  initializing() {
    this.log("working!");
  }
};

验证步骤

修改完成后重新执行:

npm link
yo test # 此处test对应generator名称generator-test的后缀部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:31