我正在尝试用ES6导入Express Node.js。我知道Node.js只支持CommonJS,所以我把Babel和Webpack 4配置成这样。
{
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
我相信有 阅读此文 上面的方法应该可以用。但在构建时,我还是得到了以下错误。
import express from "express"
^^^^^^
语法错误。不能在模块外使用导入语句
是我的 babel-loader
不工作,还是有其他问题?首先,并不是我所有的文件都是用ES6导入的--有些还是用CommonJS require
语句。我想一次只在一个文件上试一下,以确保它能正常工作,可惜它不能。
有什么想法吗?我使用的是 core-js 2.6.11
因为版本 3
惹祸 与 mini-css-extract-plugin
@babelplugin-transform-modules-commonjs对我来说确实有效,因为我需要一些commonjs库来设置测试基础设施。请注意在babel.config.js中添加它。