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

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

青灯夜游
青灯夜游avant
2022-04-01 20:08:112202parcourir

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,
}

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))

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"
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer