📌  相关文章
📜  中的错误.服务器 server.js 模块构建失败(来自 .node_modules babel-loader lib index.js):- Javascript (1)

📅  最后修改于: 2023-12-03 15:06:15.498000             🧑  作者: Mango

Javascript 服务器错误

现象

在构建服务器时,发现 server.js 模块构建失败,错误信息来自于 babel-loader 模块的 index.js 文件。错误信息可能类似于以下内容:

ERROR in ./server.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
Error: Plugin/Preset files are not allowed to export objects, only functions. In [...]
原因

该错误通常是由于使用了旧版本的 babel-loader 模块,导致对某些新的包含配置选项的 preset 进行解析时出错。一个可能的场景是,在 babel-loader 升级到 v8.0.0 以上版本之前,程序员将某些选项配置在对象中,而不是将其传递给 webpack 配置文件,这可能导致无法正确解析 presets。

解决方案
升级 babel-loader

如果您使用的是旧版本的 babel-loader,尝试将其升级到 v8.0.0 以上版本,以解决上述问题。

可以通过以下命令来升级:

npm i -D babel-loader@latest
更新 babel 配置选项

如果您已经使用最新版本的 babel-loader,可能需要将预设选项(preset options)传递给 babel.config.js 文件,而不是将其配置在对象中。例如:

// webpack.config.js

module: {
  rules: [
    {
      test: /\.js$/,
      exclude: /node_modules/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: [
            [
              '@babel/preset-env',
              {
                targets: {
                  node: 'current',
                },
              },
            ],
          ],
          plugins: [
            '@babel/plugin-transform-runtime',
          ],
        },
      },
    },
  ],
},

替换为:

// babel.config.js

module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        targets: {
          node: 'current',
        },
      },
    ],
  ],
  plugins: [
    '@babel/plugin-transform-runtime',
  ],
};
结论

通过升级 babel 以及使用正确的 babel 配置选项方法,可以轻松地解决在 JavaScript 服务器构建过程中出现的类型为“错误。服务器 server.js 模块构建失败”的问题。