我试图将ES6导入与Express Node.js一起使用。我知道Node.js仅支持CommonJS,所以我已经用Webpack 4配置了Babel:
{
test: /\.m?js$/,
exclude: ['/node_modules/', /\bcore-js\b/, /\bwebpack\/buildin\b/, /@babel\/runtime-corejs3/],
use: {
loader: 'babel-loader',
options: {
babelrc : false,
sourceType : "unambiguous",
presets : [
["@babel/preset-env", {
modules : false,
useBuiltIns : "usage",
corejs : {
version : "2",
}
}]
],
}
}
},
作为测试是否可行的测试,我将CommonJS require
语句更新为ES6 import
,如下所示:
import express from "express"
import api from "api/v1/index.api.js"
const expressRouter = express.Router();
expressRouter.get('/', async function (req, res) {
});
export default expressRouter
我相信read this article可以满足上述要求。但是在构建时,我仍然收到以下错误:
从“ express”导入快递
^^^^^^^
SyntaxError:无法在模块外部使用import语句
我的babel-loader
是否无法正常工作,或者还有其他问题吗?首先,不是我的所有文件都使用ES6导入-有些仍在使用CommonJS require
语句。我以为可以一次在一个文件上进行尝试,以确保它可以正常运行,但不幸的是它无法正常工作。
关于要看什么的任何想法?我使用core-js 2.6.11
是因为版本3
causes problems和mini-css-extract-plugin
答案 0 :(得分:1)
@ babel / plugin-transform-modules-commonjs对我有用,我需要一些commonjs库用于设置测试基础结构。请注意将其添加到babel.config.js