Я пытаюсь использовать импорт из ES6 с Express Node.js. Я знаю, что Node.js поддерживает только Common JS, поэтому я настроил 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",
}
}]
],
}
}
},
В качестве теста, чтобы увидеть, работает ли он, я обновил свой Common JS require
в ES6 import
s, например:
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»
^^^^^^
SyntaxError: Невозможно использовать оператор импорта вне модуля
Мой babel-loader
не работает или возникает какая-то другая проблема? Во-первых, не все мои файлы используют импорт ES6 - некоторые до сих пор используют операторы Common JS require
. Я подумал, что буду пробовать его с одним файлом за раз, чтобы убедиться, что он работает, но, к сожалению, это не так.
Есть идеи, что посмотреть? Я использую core-js 2.6.11
, потому что версия 3
вызывает проблемы с mini-css-extract-plugin