不能在配置了Babel的模块外使用导入语句。

问题描述 投票:0回答:1

我正在尝试用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

javascript node.js ecmascript-6 babel babel-loader
1个回答
1
投票

@babelplugin-transform-modules-commonjs对我来说确实有效,因为我需要一些commonjs库来设置测试基础设施。请注意在babel.config.js中添加它。

© www.soinside.com 2019 - 2024. All rights reserved.