Webpack 会导致捆绑包输出中的语法错误

Webpack causes syntax error in bundle output

本文关键字:输出 错误 语法 包输出 Webpack      更新时间:2023-09-26

我已经为一个我认为是由 Webpack 引起的问题而苦苦挣扎了一段时间。

从本质上讲,我有一个基于节点的应用程序,我正在与 Webpack 捆绑在一起以服务于客户端(它是一个基于 ReactJS 的应用程序)。当我安装桌面 NPM 包并对其进行require时出现问题。

尝试在浏览器中加载 Webpack 创建的bundle.js时,出现语法错误:

Uncaught SyntaxError: Unexpected identifier

bundle.js抱怨这条线:

target[capName] = __webpack_require__(387)(""path + '/' + name);

经过一番挖掘,我发现这条线起源于Hoek库中的一行(这是Tabletop的子依赖项):

target[capName] = require(path + '/' + name);

显然,Webpack在这里做了一些时髦的事情。

不过,我无法找出原因。桌面包括一个 NodeJS 使用示例,我能够 Webpack 并运行良好。

我还克隆了Hoek和Webpacke,没有看到任何像上面这样的非法转换。

所以现在,我不确定这是Webpack,Hoek还是桌面问题,这就是我在这里发布它的原因。

我在这里或GH上没有发现任何相关问题。

所有的帮助感谢!

我在添加时已经成功地使用了superagent

plugins.push(new webpack.DefinePlugin({ "global.GENTLY": false }));node: {__dirname: true}

到 webpack

的配置修复superagent用于 webpack。

使用 request 库时,将以下内容添加到 webpack 的配置中:

node: {
  "net": "empty"
}

修复Uncaught Error: Cannot find module "net" .

但是,我现在遇到了 mime 库的问题,它是 request 的依赖项:Error: ENOENT, no such file or directory '/types/mime.types'

Aksel,您是否成功地使用webpack修复了request

事实证明,由于上面显示的动态需求行,hoek包的过时嵌套依赖项导致了这种情况。这已在 hoek@2.0.0 中删除。

不幸的是,Tabletop 的 request dep 有一个过时的hawk依赖关系,这又取决于hoek .我分叉了request并提高了版本,但现在我在浏览器中加载时收到不同的错误:

Uncaught Error: Cannot find module "net"

net是一个核心的 Node 模块,所以我怀疑这里发生了什么,因为我们正在 Webpack 服务器端 JS 在浏览器中运行它。然而,这是一个不同的问题,所以我认为这里的原始问题得到了回答。

但我仍然无法使用桌面。我可能不得不将其浏览器化并直接使用该捆绑包。