node 支持esmodule
方法一 在 package.json 内指定 type 字段为 module
该"type"字段定义Node.js用于所有 .js 以该 package.json 文件为最接近父文件的文件的模块格式 。
.js 当最近的父 package.json 文件包含 "type" 值为的顶级字段时,以 结尾的文件将作为ES模块加载 "module"
"type": "module",
方式二 修改文件后缀为mjs
注意mjs和commonjs尽量不能混用
index.mjs
import obj from "./module.mjs";
console.log(obj);
module.mjs
export default {
a: 1,
};
执行
node index.mjs
结果:
方法三 使用webpack编译
1安装webpack和webpack-cli
npm install webpack webpack-cli --save-dev
2.安装babel
npm install --save-dev babel-loader @babel/core
npm install @babel/preset-env --save-dev
3.新建webpack.config.js
const path = require("path");
module.exports = {
//配置模式
mode: "development",
//配置入口文件
entry: "./index.js",
//输出文件
output: {
path: path.join(__dirname, "/dist"),
filename: "test.js",
},
module: {
rules: [
//使用babel编译js
{
test: /\.m?js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
},
},
],
},
};
4.新建babel.config.json文件
{
"presets": ["@babel/preset-env"]
}
5.执行编译后的 test.js
node test.js
6.结果: