在Node.js中,如果您想在一个CommonJS模块中导入一个ES模块,您可以使用动态的
import
和ES模块上的
.mjs文件扩展名。例如:
index.js CommonJS
const crypto = require('crypto');
import('./path/to/mod.mjs').then(mod =>
console.log(mod.msg);
);
mod.mjs ES模块
export const msg = "Hello world!"
两个关于如何在CommonJS模块中使用
import
来导入
lodash-es
包的示例:
import('lodash-es').then(_ => {
console.log(_.pad(_.toUpper('hello world'), 17, '*'));
});
Promise.all([
import('lodash-es/pad.js'),
import('lodash-es/toUpper.js'),
])
.then(([{ default: pad }, { default: toUpper }]) => {
console.log(pad(toUpper('hello world'), 17, '#'));
});
或者你可以将需要的内容导入到一个不同的 CommonJS 模块中,然后导出一个 Promise
,这样你就可以使用 import
或 require
导入它了。
utils.js
module.exports = Promise.all([
import('lodash-es/pad.js'),
import('lodash-es/toUpper.js'),
]);
index.js
require('./utils.js').then(([{ default: pad }, { default: toUpper }]) => {
console.log(pad(toUpper('hello world'), 17, '*'));
});