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

运行ReadMe生成器时Nodemon报ES模块require未定义错误

问题原因

package.json中配置了"type": "module"时,Node.js会默认将所有.js后缀的文件按ES Module规范解析,而ES Module规范下不支持CommonJS标准的require()导入语法。你在index.js首行用const inquirer = require('inquirer')的CommonJS写法导入依赖,直接触发了该报错。
另外你代码末尾只写了runQuery没有加括号执行,就算解决模块导入问题,交互逻辑也不会实际运行。

修复方案

二选一即可,优先推荐方案1,适配inquirer最新版本的要求:

  • 方案1:保留ES Module配置,改用ES标准导入语法

    1. 替换index.js第一行的导入代码为ES规范写法:
    import inquirer from 'inquirer';
    
    1. 将文件末尾单独的runQuery补全括号为函数调用:
    runQuery();
    

    提示:inquirer 9.0及以上版本本身就是纯ESM包,用这种写法不会出现兼容问题。

  • 方案2:切回CommonJS规范
    两种操作选其一即可:

    1. 打开根目录package.json,直接删除"type": "module"配置项后保存,Node.js会默认把.js文件按CommonJS解析;
    2. 不想改package.json的话,直接把index.js重命名为index.cjs,Node.js会自动将.cjs后缀文件识别为CommonJS模块。

    注意:选这个方案同样要记得把文件末尾的runQuery改成runQuery();,否则函数不会执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:45:42