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

在package.json中声明"type": "module"后Prettier运行失败的问题求助

解决Prettier与ES Module配置冲突的问题

这里有几个实用的方案来解决你遇到的问题,同时让Sublime Text的JSPrettier插件恢复工作:

方案1:重命名Prettier配置文件为CommonJS格式后缀

这是最稳妥的解决方式,直接避开ES模块和CommonJS的加载冲突:

  • 将你的prettier.config.js重命名为prettier.config.cjs
  • 原理:当你在package.json中设置了"type": "module",Node.js会把所有.js文件默认识别为ES模块,但.cjs后缀会明确告诉Node.js这是一个CommonJS模块,而Prettier目前正是用CommonJS的require()来加载配置文件的,这样就能完美兼容了。

方案2:改用ES模块格式的配置文件(需Prettier版本支持)

如果你的Prettier版本在v2.7.0及以上,可以尝试把配置文件改成ES模块写法:

// prettier.config.js
export default {
  // 你的Prettier配置项,比如:
  singleQuote: true,
  semi: false,
  printWidth: 100
};

不过要注意:部分旧版本的JSPrettier插件可能还不支持ES模块格式的配置文件,所以如果方案1能解决问题,优先选方案1。

让Sublime Text的JSPrettier插件恢复工作

  • 如果你用了方案1的.cjs配置文件,大多数情况下JSPrettier会自动识别到新的配置文件;
  • 如果插件没自动识别,你可以手动指定配置文件路径:
    打开Sublime Text的设置,找到JSPrettier的配置项,添加:
    "prettier_config_path": "${project_path}/prettier.config.cjs"
    

问题根源解释

报错的核心原因是:当你在package.json中添加了"type": "module",Node.js会把项目中所有.js文件默认标记为ES模块,但Prettier的底层代码目前还是使用require()(CommonJS的加载方式)来读取配置文件,而ES模块是不能通过require()加载的,这就导致了加载冲突,从而触发了报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:24:06