使用husky进行commit约束的时候会报错

来源:4-2 使用 commitlint 规范 commit 信息

jaylen666

2023-01-31

/Users/jaylen/Desktop/ele-h5/node_modules/ts-node/dist/index.js:851
            return old(m, filename);
                   ^
Error [ERR_REQUIRE_ESM]: require() of ES Module /Users/jaylen/Desktop/ele-h5/commitlint.config.js from /Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/loaders.js not supported.
commitlint.config.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules.
Instead rename commitlint.config.js to end in .cjs, change the requiring code to use dynamic import() which is available in all CommonJS modules, or change "type": "module" to "type": "commonjs" in /Users/jaylen/Desktop/ele-h5/package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).

    at Object.require.extensions.<computed> [as .js] (/Users/jaylen/Desktop/ele-h5/node_modules/ts-node/dist/index.js:851:20)
    at module.exports (/Users/jaylen/Desktop/ele-h5/node_modules/import-fresh/index.js:32:59)
    at loadJs (/Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/loaders.js:16:18)
    at Explorer.loadFileContent (/Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/Explorer.js:86:20)
    at Explorer.createCosmiconfigResult (/Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/Explorer.js:94:36)
    at Explorer.loadSearchPlace (/Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/Explorer.js:70:31)
    at async Explorer.searchDirectory (/Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/Explorer.js:55:27)
    at async run (/Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/Explorer.js:35:22)
    at async cacheWrapper (/Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/cacheWrapper.js:16:18)
    at async Explorer.search (/Users/jaylen/Desktop/ele-h5/node_modules/cosmiconfig/dist/Explorer.js:27:20)
    at async loadConfig (/Users/jaylen/Desktop/ele-h5/node_modules/@commitlint/load/lib/utils/load-config.js:40:19)
    at async load (/Users/jaylen/Desktop/ele-h5/node_modules/@commitlint/load/lib/load.js:19:20)
    at async main (/Users/jaylen/Desktop/ele-h5/node_modules/@commitlint/cli/lib/cli.js:194:20) {
  code: 'ERR_REQUIRE_ESM',
  filepath: '/Users/jaylen/Desktop/ele-h5/commitlint.config.js'
}
husky - commit-msg hook exited with code 1 (error)
写回答

1回答

one_pieces

2023-02-01

同学你好,这个问题应该是你的 package.json 里声明 "type": "module",这个配置的意思是项目下的所有 js 文件都使用 ES 模块。但目前 commitlint.config.js 使用的是 commonjs 模块方式,所以导致不兼容。

解决方式有两种,一种是将 commitlint.config.js 文件名改成 commitlint.config.cjs 声明这是一个 commonjs 模块。另一种是把 package.json 里的 type: module 去掉。

1
4
one_pieces
回复
jaylen666
不客气~
2023-02-22
共4条回复

Vue3+Pinia+Vite+TS 还原高性能外卖APP项目

Vue3+Pinia+Vite+TS 还原高性能外卖APP项目

392 学习 · 251 问题

查看课程