如何修復錯誤 ruleSet[1].rules[3].oneOf[8].use[2]!./styles/globals.css 找不到模組
我的一些學員在進行 Next.js 項目的 npm run dev
時遇到了一個我無法重現的問題。
他們遇到了如下錯誤:
➜ rest-api git:(main) npm run dev
> [[email protected]](/cdn-cgi/l/email-protection) dev
> next dev
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
info - Loaded env from /Users/flaviocopes/dev/bootcamp/rest-api/.env
wait - compiling...
error - ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[3].oneOf[8].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[3].oneOf[8].use[2]!./styles/globals.css
Error: Cannot find module 'tailwindcss'
最後一行中出現了 tailwindcss
,同時還有 autoprefixer
的問題。
還有可能出現這個錯誤:Error: Your custom PostCSS configuration must export a plugins key.
這個錯誤信息其實並不是很有用!
經過大量的調試,找到了問題的原因。
出現錯誤的項目並沒有安裝 Tailwind CSS,但在之前的幾周,我們使用了 Tailwind。
問題的原因如下:
他們在父文件夾中有一個 postcss.config.js
文件。或者在其路徑的其他父文件夾中,而不僅僅是直接的父文件夾。也可能是他們的主目錄。
類似下面這樣:
module.exports = {
plugins: {
autoprefixer: {},
},
}
重要提示:在他們目前的項目中,並沒有配置 PostCSS。
如果已經安裝了 PostCSS,則沒有問題。僅當你的當前項目根文件夾中沒有 postcss.config.js
時,才會出現此問題。
但是 Next.js 的 工具 看到了父文件夾中有一個 postcss.config.js
文件,並且執行了它,引發了此錯誤:
error - ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[3].oneOf[8].use[1]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[3].oneOf[8].use[2]!./styles/globals.css