Node同时使用esm和cjs

在使用commanderinquirer的时候,发现最新版本的inquirer不支持require的方式,而commander还是require方式导入,导致在一个js文件中需要同时使用esmcjs两种导入方式

node支持esm

node v14版本之后,支持在package.json中定义 "type": "module", 即可使用import导入。

同时支持两种模式

设置typemodule时,之前的require写法无法支持,需要使用createRequire解决

import { createRequire } from "module";
const require = createRequire(import.meta.url);

const program = require("commander");
import inquirer from "inquirer";