在初始化vite3 + vue3項目安裝eslint時報錯如下:
[vite] Internal server error: Cannot read config file: D:\vue3-template\.eslintrc.js
Error: require() of ES Module D:\vue3-template\.eslintrc.js from D:\vue3-template\node_modules\@eslint\eslintrc\dist\eslintrc.cjs not supported.
.eslintrc.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 .eslintrc.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 D:\vue3-template\package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).
在分析官方提示后發(fā)現(xiàn)應該在package.json文件中修改type為commonjs或?qū)?eslintrc.js文件名改為.eslintrc.cjs便可解決該問題
原因分析:
-
type
字段的產(chǎn)生用于定義package.json
文件和該文件所在目錄根目錄中.js
文件和無拓展名文件的處理方式升略。值為'moduel'
則當作es模塊處理壁顶;值為'commonjs'
則被當作commonJs
模塊處理 - 目前
node
默認的是如果pacakage.json
沒有定義type
字段,則按照commonJs
規(guī)范處理 -
node
官方建議包的開發(fā)者明確指定package.json
中type
字段的值 - 無論
package.json
中的type字段為何值,.mjs
的文件都按照es
模塊來處理纲岭,.cjs
的文件都按照commonJs
模塊來處理