Maison > interface Web > js tutoriel > le corps du texte

Une brève analyse de la façon d'appeler le module commonjs en mode nœud esmodule

青灯夜游
Libérer: 2022-04-01 20:08:11
avant
2346 Les gens l'ont consulté

Cet article poursuivra l'apprentissage de node et présentera comment appeler le module commonjs en mode esmodule. J'espère qu'il sera utile à tout le monde !

Une brève analyse de la façon d'appeler le module commonjs en mode nœud esmodule

J'ai récemment écrit beaucoup de scripts nodejs et j'ai rencontré un problème. Après avoir modifié le type : "module" de package.json, certains outils ne peuvent pas être utilisés normalement (ex. postcss-cli).

Cet article enregistre et résout principalement le problème de l'utilisation du module commonjs en mode esmodule.

Solution

1. Remplacez le plug-in

Cela semble absurde, mais ce n'est pas le cas. Prenons postcss comme exemple. En fait, il y a eu un suivi issue, mais il n'a pas encore été mis à jour. J'ai vu des réimplémentations telles que postcss-es-modules (le volume de téléchargement n'est pas élevé, donc je ne l'ai pas encore essayé).

Ou utilisez des plug-ins via le support du framework vite/rollup lui-même (je parlerai de la façon dont le framework lui-même le gère plus tard), par exemple

// 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,
}
Copier après la connexion

2 via la méthode d'expansion prise en charge par nodejs (tapez : "module" ), ajoutez le fichier Changez le suffixe en .cjs, puis vous pouvez importer le module commonjs via l'importation par défaut à partir de '*.cjs' ; par exemple

// 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))
Copier après la connexion

3. Marquez les fichiers d'entrée des différents modules via le champ d'exportation du package. json (ceci est également couramment utilisé par la plupart des bibliothèques tierces) ; par exemple

// package.json
"exports": {
  "import": "./index.js",
  "require": "./index.cjs"
}
Copier après la connexion

Enregistrement du problème

1 Comment nodejs gère-t-il les fichiers de suffixe .mjs/.cjs ?

nodejs charge toujours les fichiers .mjs avec le module esmodule et les fichiers .cjs avec commonjs. Lorsque package.json est défini sur type : "module", les fichiers .js sont toujours chargés en tant que esmodule.

Pour plus de connaissances sur les nœuds, veuillez visiter : tutoriel Nodejs !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal