【问题标题】:Using JQuery in Node server - TypeScript在节点服务器中使用 JQuery - TypeScript
【发布时间】:2018-05-28 17:15:42
【问题描述】:

我需要使用TypeScript 从节点服务器进行 ajax 调用。 我正在将jquery 导入到我的班级

import * as $ from "jquery"

如果我将鼠标悬停在我的实现上,它会识别出下面的 ajax

然后,我将此 TypeScript 编译为 JavaScript。成功了。

如果我托管节点服务器并尝试访问此功能,则会出现以下错误

TypeError : $.ajax is not a function.

我想我错过了什么。我无法弄清楚这些事情。

【问题讨论】:

  • 在 Node 中使用 jQuery 毫无意义。您应该使用服务器端 HTTP 客户端,例如 Axios 或 Request。

标签: javascript jquery node.js ajax typescript


【解决方案1】:

不要这样做; jQuery 用于客户端,而不是服务器端

如 cmets 中所述,您应该根据需要使用服务器端 HTTP 客户端,例如内置的 http.request 方法,或 npm-fetch 或 Axios 等库。


但是,假设您使用的是jquery npm 包,请注意package page 中的以下引用:

要让 jQuery 在 Node 中工作,需要一个带有文档的窗口。由于 Node 原生不存在这样的窗口,因此可以通过 jsdom 等工具进行模拟。

npm 包提供的是一个工厂,用于实例化注入伪造的window 的 jQuery。他们举了一个例子来说明如何做到这一点,但这部分很有启发性:

这对于测试目的很有用。

“用于测试目的”是指诸如在 nodejs 中运行单元测试作为客户端包的构建管道的一部分的目的。不作为在 node 中使用的通用库。

【讨论】:

  • ...如果您确实想在节点中使用 jquery 进行 HTML 解析和遍历,您最好使用 cheerio,它具有与 jquery 相同的 API,但更快的 DOMless服务器的实现。
猜你喜欢
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 2017-11-15
  • 2016-08-06
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多