无法在已配置Babel的模块外部使用import语句

时间:2020-05-05 11:11:13

标签: javascript node.js ecmascript-6 babeljs babel-loader

我试图将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 problemsmini-css-extract-plugin

1 个答案:

答案 0 :(得分:1)

@ babel / plugin-transform-modules-commonjs对我有用,我需要一些commonjs库用于设置测试基础结构。请注意将其添加到babel.config.js