方式一:

在package.json文件的scripts域中,配置以下的命令:

"start": "cross-env NODE_ENV=dev node -r esm server/index.js”

这行命令的重点在于node命令的-r参数,参数值为esm。

如果程序的运行使用的是pm2,则可以使用类似以下的命令来启动应用:

pm2 start npm -- run

对于上例来说,就是:

pm2 start npm -- run start


方式二:

以上方式不能实现开发时的监听代码变化,一般我们使用nodemon来实现代码变化时自动进行代码转换的功能,以下方式可以在开发模式下,支持esm。

"dev": "cross-env NODE_ENV=dev nodemon server/index.js --watch server --exec babel-node"


方式三:

如果项目中使用的是纯的import,没有使用require,则可以使用node的--experimental-modules参数:

"start": "cross-env NODE_ENV=dev node --experimental-modules server/index.mjs”