千家信息网

node esmodule模式下如何调用commonjs模块

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,本文小编为大家详细介绍"node esmodule模式下如何调用commonjs模块",内容详细,步骤清晰,细节处理妥当,希望这篇"node esmodule模式下如何调用commonjs模块"文章能
千家信息网最后更新 2024年11月26日node esmodule模式下如何调用commonjs模块

本文小编为大家详细介绍"node esmodule模式下如何调用commonjs模块",内容详细,步骤清晰,细节处理妥当,希望这篇"node esmodule模式下如何调用commonjs模块"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

解决方案

1、更换插件;

好像是废话,其实不然。还是以postcss举例,其实早已有issue跟进,但一直还没更新过来。有看到重新实现的例如 postcss-es-modules(下载量不高,暂时没去试过)。

或者通过vite/rollup框架本身的支持去使用插件(后面再讲框架本身是怎么处理的), e.g.

// tailwind.config.jsexport default {  purge: ['./*.html', './src/**/*.{vue,js,ts,jsx,tsx,css}'],  darkMode: false, // or 'media' or 'class'  theme: {    extend: {},  },  variants: {    extend: {},  },  plugins: [],}// postcss.config.jsimport tailwind from 'tailwindcss'import autoprefixer from 'autoprefixer'import tailwindConfig from './tailwind.config.js'export default {  plugins: [tailwind(tailwindConfig), autoprefixer],}// vite.config.jscss: {  postcss,}

2、通过nodejs支持的拓展方式(type: "module"情况下),将文件后缀改为.cjs,然后就可以通过 import default from '*.cjs' 导入 commonjs 模块;e.g.

// utils.cjsfunction sum(a, b) {  return a + b}module.exports = {  sum}// index.jsimport utils from './utils.js'console.log(utils.sum(1, 2))

3、通过package.json的 exports 字段分别标志不同模块的入口文件(这也是大部分三方库常用做法); e.g.

// package.json"exports": {  "import": "./index.js",  "require": "./index.cjs"}

问题记录

1、nodejs分别是怎么处理.mjs/.cjs后缀文件的?

nodejs总是以 esmodule 模块加载.mjs文件,以 commonjs 加载 .cjs 文件。当package.json设置了 type: "module" 时,总是以 esmodule 加载.js文件。

读到这里,这篇"node esmodule模式下如何调用commonjs模块"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0