ホームページ  >  記事  >  ウェブフロントエンド  >  ノード esmodule モードで commonjs モジュールを呼び出す方法の簡単な分析

ノード esmodule モードで commonjs モジュールを呼び出す方法の簡単な分析

青灯夜游
青灯夜游転載
2022-04-01 20:08:112202ブラウズ

この記事では、node の学習を継続し、esmodule モードで commonjs モジュールを呼び出す方法を紹介します。

ノード 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 サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。