この記事では、node の学習を継続し、esmodule モードで commonjs モジュールを呼び出す方法を紹介します。
最近、大量の nodejs スクリプトを作成していましたが、問題が発生しました。 package.jsonのtype:「module」を変更すると、一部のツール(postcss-cliなど)が正常に使用できなくなります。
この記事は主に、esmodule モードで commonjs モジュールを使用する方法の問題を記録し、解決します。
1. プラグインを置き換えます。
はナンセンスのように思えますが、そうではありません。 postcss を例に挙げると、実は issue は長い間フォローされてきましたが、まだ更新されていません。 postcss-es-modules などの再実装を見てきました (ダウンロード量が多くないので、まだ試していません)。
または、vite/rollup フレームワーク自体のサポートを通じてプラグインを使用します (フレームワーク自体がどのように処理するかについては後で説明します) (例:
// tailwind.config.js export default { purge: ['./*.html', './src/**/*.{vue,js,ts,jsx,tsx,css}'], darkMode: false, // or 'media' or 'class' theme: { extend: {}, }, variants: { extend: {}, }, plugins: [], } // postcss.config.js import tailwind from 'tailwindcss' import autoprefixer from 'autoprefixer' import tailwindConfig from './tailwind.config.js' export default { plugins: [tailwind(tailwindConfig), autoprefixer], } // vite.config.js css: { postcss, }
2)。 (タイプ: " module")、ファイルのサフィックスを .cjs に変更すると、'*.cjs' からのデフォルトのインポートを通じて commonjs モジュールをインポートできます (例:
// utils.cjs function sum(a, b) { return a + b } module.exports = { sum } // index.js import utils from './utils.js' console.log(utils.sum(1, 2))
3)。パッケージのエクスポート フィールドを使用します。モジュールのエントリ ファイル (これは、ほとんどのサードパーティ ライブラリで一般的な方法でもあります) にマークを付けるための .json (例:
// package.json "exports": { "import": "./index.js", "require": "./index.cjs" }
1)。 Nodejs は .mjs/.cjs サフィックス ファイルをどのように処理しますか?
Nodejs は常に、esmodule モジュールを使用して .mjs ファイルをロードし、commonjs を使用して .cjs ファイルをロードします。 package.json のタイプが「module」に設定されている場合、.js ファイルは常に esmodule としてロードされます。
ノード関連の知識の詳細については、nodejs チュートリアル を参照してください。
以上がノード esmodule モードで commonjs モジュールを呼び出す方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。