javascript - 我的 webpack 捆绑脚本中未定义的 Node 模块

标签 javascript node.js webpack browserify

我正在制作一个基于 jped 图片的网络应用程序,它可以识别字符并将其呈现在用户的交互式界面中 - 这包括一些异步代码。有 4 个 js 脚本文件,它们都需要 npm 模块和一个 html View 。

为了测试应用程序客户端,我决定将脚本捆绑在一起。 它显示以下错误消息:

Uncaught ReferenceError: require is not defined

我的 npm 模块列表,其代码在运行时返回此错误:

我试过:

  1. > browserify我的脚本打包成一个包,但我读到它不适用于异步函数;
  2. > webpack脚本打包成一个包,但是像 fs 和 child_process 这样的 Node 模块正在返回“未定义”;
  3. 添加特定 Node 模块,child-process-ctor , 强制 child_process 包含

唉,还是返回同样的错误信息。

问题:

  1. 捆绑脚本是正确的方法吗?
  2. 是webpack没有转译fs和child_process的问题correctly
  3. 我应该考虑哪些可能的解决方案?

谢谢大家。这是我关于 SO 的第一个问题——非常欢迎任何反馈!

PS:这对于 Using module "child_process" without Webpack 可能是多余的.

最佳答案

好的,这个答案是对我的评论的跟进,它更直接地回答了问题。然而,在这里我会比可能需要的更详细,但它会彻底回答你的问题。此外,它具有教育意义,一旦你真正开始深入研究它,我会说它非常有趣 :D

从头开始。随着早期互联网变得更加先进,对“前端逻辑”类型的需求也在增加,而 Netscape 对这种需求的回应是在创纪录的时间内诞生了一种具有竞争力的尖端编程语言。

我所说的创纪录时间是指 10 天,而所说的竞争力是指几乎没有功能。

没错 Javascript 在 10 天后诞生了 (literally)。正如您所想象的那样,这是一种非常糟糕的语言,但它运行良好以至于人们开始使用它。

因为它是 Internet 的编程语言,而且由于 Internet 的发展速度如此之快,已经有足够多的人开始使用它,以至于删除它的想法变得可怕。

如果你改变它,你会破坏与数百万网站的向后兼容性。另一个想法是保留它,但也实现新标准。然而,很难证明这一点是合理的,因为 javascript 已经花费了大量的工作来维护,维护多个标准将是一场噩梦(咳... flash 咳)。

Javascipt 对于"new"程序员来说很容易学习,但问题是在 php、ruby、mySql、Mongo、Css、Html 都在各自的王国中称霸的世界中,javascript 是唯一的一种语言。

所以 someone认为将 javascript 移动到服务器是个好主意,因此 node.js 诞生了。

然而,要使 javascript 在服务器上发挥作用,它必须能够执行您不希望它在浏览器中执行的操作。例如,扫描您的硬盘并编辑您的文件。

如果您访问的每个网站都可以开始扫描并上传您系统中的所有内容 well....

但是,如果您的服务器软件无法编辑或读取文件,您需要它来 well....

你明白了。它是同一种语言,但由于安全问题,node.js 有一些差异。主要是允许使用的模块。

现在是有趣的部分。你能在浏览器中运行 node.js 客户端吗?技术上是的。事实上,现在我们正在倾销整个 operating systems进入名为 asm.js 的 javascript 子集如果有足够的处理能力,真的没有什么是 javascript 做不到的。

然而,即使您将整个 node.js 引擎(基本上是 chrome 的精简版)转储到 asm.js 中,您仍然会受到“主机”浏览器设置的相同安全限制,因此您的模块只能在浏览器提供的沙箱中运行。

因此,从技术上讲,它只是另一个浏览器中的一个浏览器,以一半的速度运行,但具有相同的安全限制。

这是我会推荐的事情吗?当然不是。

这是人们以前没有尝试过的东西吗?当然不是。

所以我希望这有助于回答您的问题。

关于javascript - 我的 webpack 捆绑脚本中未定义的 Node 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50552714/

相关文章:

javascript - 对 Javascript setInterval 示例与实际工作/非工作行为感到困惑

javascript - 了解日期和时间到特定时区的转换

node.js - 检测 async.queue 何时完成

linux - 在 Ubuntu 中安装 Node.js 的路径

css - 找不到 woff 和 ttf 字体 404

javascript - 从javascript中的多维数组中删除列

javascript - UIWebView loadRequest白屏

javascript - 如何使用 nodejs 和 node-fetch 从 Azure for Microsoft Graph 获取客户端 token

webpack - 如何在html中传递webpack环境变量?

webpack - 如何从每个条目中提取关键(首屏)CSS?