📌
File is a CommonJS module; it may be converted to an ES module.の解決方法
CommonJSの記法で書かれたファイルに対し、TypeScriptが次のようなメッセージを表示する場合があります
File is a CommonJS module; it may be converted to an ES module.
このメッセージはエラーでも警告でもなく、TypeScriptがCommonJSで書かれたファイルをESの記法に変換するかもしれません、と伝えているだけです。
よって修正する必要はないのですが、見たいものでもありません。
どうすれば、非表示に、あるいは根本解決できるのでしょうか?
手順を説明します。
-
VSCode
-
CJS から ES へ変換する
- 3つのドットの箇所にマウスを持っていくと、次のQuickFixが表示されるはずです。
- 💡マークをクリックするとES記法へ変換されます。
//-- CommonJS --// module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, } //-- ES --// export const plugins = { tailwindcss: {}, autoprefixer: {}, };
- 注意点
- ES記法へ変換したことでコードが動かなくなるかもしれません。
- 例えば、
next.config.js
というファイルはES記法だとNextの開発サーバーが起動しません。 - 公式の説明を御覧ください
-
機能を無効にする
- とりあえず非表示にしたい、であれば次の設定を
False
にしてください。Stackoverflowより。
- とりあえず非表示にしたい、であれば次の設定を
-
-
Neovim
-
CJS から ES へ変換する
- LSPのcode actionを使ってください。次の図は私が使っている環境のものです。
- CommonJSからESへ変換されます。
//-- CommonJS --// module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, } //-- ES --// export const plugins = { tailwindcss: {}, autoprefixer: {}, };
- 変換した場合の注意点
- ES記法へ変換したことでコードが動かなくなるかもしれません。
- 例えば、
next.config.js
というファイルはES記法だとNextの開発サーバーが起動しません。 - 公式の説明を御覧ください
-
機能を無効にする
- VSCodeのようにメッセージを無効にする機能があるのかはわかりませんでした。
-
-
まとめ
-
typescript: File is a CommonJS module; it may be converted to an ES module.
の解決方法について説明しました。 - 解決方法は2つあります。
- CommonJSからESへ変換する
- メッセージを非表示設定にする。(VSCodeのみ)
- ただ、エラーなどかならず対処しないといけないメッセージではないので、無視して進めるのが結局は良いかと思います。
-
Discussion