【发布时间】:2018-11-06 05:47:29
【问题描述】:
我正在制作一个基于 jped 图片的网络应用程序,它可以识别字符并将其呈现在用户的交互式界面中 - 这包括一些异步代码。有 4 个 js 脚本文件,它们都需要 npm 模块和一个 html 视图。
为了测试应用程序客户端,我决定将脚本捆绑在一起。 它显示以下错误消息:
Uncaught ReferenceError: require is not defined
我的 npm 模块列表,其代码在运行时返回此错误:
- isexe:需要fs
- 销毁:fs
- tesseractocr: child_process, fs
我试过了:
- browserify 我的脚本打包成一个包,但我读到它不适用于异步函数;
- webpack 将脚本打包成一个包,但是像 fs 和 child_process 这样的节点模块正在返回 'undefined' ;
- 添加特定的 Node 模块 child-process-ctor,以强制将 child_process 包含在其中
唉,返回相同的错误消息。
问题:
- 捆绑脚本是正确的方法吗?
- 是webpack没有转译fs和child_processcorrectly的问题吗?
- 我应该考虑哪些可能的解决方案?
谢谢大家 :-) 这是我关于 SO 的第一个问题——欢迎任何反馈!
PS:这对于Using module "child_process" without Webpack 可能是多余的。
【问题讨论】:
-
我假设当您说要运行 node.js“客户端”时,您的意思是您希望为客户端提供一个更干净的前端包,而不是公开所有开发脚本。那是对的吗?如果是这样,您是否查看过类似这样的 node-webpack 库:github.com/shakacode/node-webpack-async-example
-
@YAHsaves :我可能会误解自己。当我说我想在“客户端”运行 node.js 时,我的意思是我的应用程序旨在无服务器使用,全部来自浏览器或客户端。我仅将节点用于 npm 模块(inc;. tesseractocr)。我刚读了你的链接。您的 node-webpack-async-example 是否有助于在我的应用程序中使用外部模块和 Node 模块(fs、child_process)?谢谢!!
-
@emond 如果你想在浏览器中运行你的脚本 node.js 模块将不起作用。 Node js 模块需要 node.js 运行时。因此,为了让它在“客户端”工作,您的客户端需要安装 node.js,并且他们需要从节点命令行(或任何其他类似机制)运行您的脚本。
-
@YAHsaves 哇,这是一个实现。我认为 Node.js 模块设计为在服务器上运行......但天真地认为 browserify/webpack 捆绑器会创建“静态资产”,然后可以在客户端运行而无需 Node.js 运行时环境.显然我误解了这一点。因此,如果我的应用程序仅在客户端运行,我不应该首先使用 Node.js,对吗?
-
你说 node.js 可以在服务器上运行是正确的。那是因为服务器将安装 node.js 及其所有依赖项。但是,当在服务器上使用 node.js 时,它基本上变成了 php。它是一个后端处理脚本,使服务器输出网站文件。很容易将“node javascript”与“browser compatible”混淆,因为它们都是“javascript”,但是 node 模块是将 node 与常规 javascript 区分开来并且需要 node 运行。所以如果你想运行这个真正的客户端,你需要找到节点的替代品。
标签: javascript node.js webpack browserify