将 JQuery 与 node.js 一起使用时出错

     2023-03-08     300

关键词:

【中文标题】将 JQuery 与 node.js 一起使用时出错【英文标题】:Errors using JQuery with node.js 【发布时间】:2012-10-10 09:06:56 【问题描述】:

我在 Windows 7 上运行了全新安装的 node.js,我正在尝试运行一个非常基本的 JQuery 脚本,名为 a.js,其中仅包含:

require("jquery");
$().jquery;

不幸的是,这不会与 JQuery 一起运行,给我一个 TypeError:

C:\Users\Ian>node a.js

C:\Users\Ian\node_modules\jquery\lib\node-jquery.js:10
    window.XMLHttpRequest.prototype.withCredentials = false;
                         ^
TypeError: Cannot read property 'prototype' of undefined
    at create (C:\Users\Ian\node_modules\jquery\lib\node-jquery.js:10:26)
    at C:\Users\Ian\node_modules\jquery\lib\node-jquery.js:9435:18
    at Object.<anonymous> (C:\Users\Ian\node_modules\jquery\lib\node-jquery.js:9437:2)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (C:\Users\Ian\a.js:1:63)

我通过 Google 发现了一些关于此错误的错误报告,其中大部分建议降级 JQuery。但是,当我这样做时,我会得到一个不同的错误。以下是 JQuery 1.6.3:

C:\Users\Ian>node a.js

module.js:340
    throw err;
      ^
Error: Cannot find module 'location'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at create (C:\Users\Ian\node_modules\jquery\node-jquery.js:6:33)
    at C:\Users\Ian\node_modules\jquery\node-jquery.js:9065:18
    at Object.<anonymous> (C:\Users\Ian\node_modules\jquery\node-jquery.js:9067:2)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)

谁能提出什么问题?我尝试了各种重新安装该软件的方法,但都没有成功。我已经为 jquery 的默认版本和 jquery@1.6.3 尝试了 npm install -gnpm install

编辑:This question - 尚未得到答复 - 似乎相关。

【问题讨论】:

为什么要在服务器端运行 jQuery? 没有好的答案对不起@SLaks - 我正在使用在服务器端运行 JQuery 的其他人的代码。当我无法让它工作时,我想出了一个简单的测试示例,以确保问题只出在 JQuery 部分,而不是其他人的代码中的任何其他部分。 @Ina 是的,但这就是问题所在,jQuery 不是服务器端库,它依赖于节点中不存在的东西。 @JakubHampl 所以你认为没有解决方法吗?我相信我继承的代码运行良好。我可以通过手动安装软件包(例如上面的位置)来解决问题,但我最终遇到了 TypeError。我也很感激您可以提供的任何链接,而不是服务器端库,npmjs.org/package/jquery 似乎暗示它是,但我是新手,很容易出错。 @SLaks 有时您会在服务器端重复使用为浏览器编写的库。 【参考方案1】:

您必须将模块分配给$ 变量:

var $ = require('jquery');
$().jquery;

【讨论】:

是的,但是错误发生在第 1 行,所以不是未定义的$ 感谢@zeMirco,不幸的是,这并没有改变我的任何错误。 错误必须在您未向我们显示的其余代码中。第一个错误是 window.XMLHttpRequest 未定义。 我刚刚从节点 v0.8.12 降级到 v0.8.11,但这对我没有帮助。【参考方案2】:

在 jquery-nodejs 项目的 git 页面中,说这在 Windows 上不起作用,所以问题出在你的操作系统上。 https://github.com/coolaj86/node-jquery

【讨论】:

我在 Mac OS X 上遇到了同样的问题。可能与节点 0.10.0 有关,因为我在升级之前没有看到它发生。 这不太准确:contextify 在 Windows 上构建并不容易,但如果您安装了所需的 MS 构建工具,您可以使用 node-gyp 实现它。一旦你这样做了,jQuery 应该是可安装的。【参考方案3】:

如果你在节点 0.10.x ... 运行 sudo npm rebuild

https://github.com/coolaj86/node-jquery/issues/35

【讨论】:

太棒了!谢谢你拯救了我的夜晚:) 这也让我更早。我正在运行ubuntu。 Apt get 只能得到 0.6。升级到0.10然后这个错误。清除 node_modules 并重新运行 npm install。【参考方案4】:

我在 REHL 上遇到了这个问题,sudo npm rebuild 为我解决了这个问题。

【讨论】:

【参考方案5】:

对于运行 Windows 的用户,npm rebuild 可能无法正常工作,您可能仍会看到类似以下内容:

C:\Projects\NODE\paragraphs\node_modules\jquery\lib\node-jquery.js:10
window.XMLHttpRequest.prototype.withCredentials = false;
                     ^
TypeError: Cannot read property 'prototype' of undefined

找到this solution 感谢用户NeverI 为我解决了问题:

在 node-jquery.js(位于 \node_modules\jquery\lib 下)中更改行:

if(window == null ) 
    window = require('jsdom').jsdom().createWindow();

到:

 if(!window || !window.document) 
    window = require('jsdom').createWindow();
    window.document = require('jsdom').jsdom();

【讨论】:

将 `require()` 与 `node --eval` 一起使用

】将`require()`与`node--eval`一起使用【英文标题】:Use`require()`with`node--eval`【发布时间】:2011-06-0217:27:22【问题描述】:在使用node.js对--eval的新支持时,当我尝试使用require()时出现错误(ReferenceError:requireisnotdefined)。这是一个失败的... 查看详情

将 Heroku 插件与 node.js 一起使用

】将Heroku插件与node.js一起使用【英文标题】:UseHerokuaddonmongolabwithnode.js【发布时间】:2015-01-1722:42:09【问题描述】:我在mongolab中使用node.js,我已经按照mongolab教程(https://devcenter.heroku.com/articles/mongolab#getting-your-connection-uri)在我... 查看详情

将 CouchDB 与 Node.js 库一起使用

】将CouchDB与Node.js库一起使用【英文标题】:UseCouchDBwithNode.jslibrary【发布时间】:2013-08-2810:54:38【问题描述】:CouchDB使用javascript来验证、查询、做map-reduce等等。我想知道有没有办法在这些javascript函数中使用node.js库?比如使用r... 查看详情

Node.js 和 JQuery:“ReferenceError:$ 未定义”错误。如何在服务器上将 jquery 与节点一起使用?

】Node.js和JQuery:“ReferenceError:$未定义”错误。如何在服务器上将jquery与节点一起使用?【英文标题】:Node.js&JQuery:"ReferenceError:$isnotdefined"error.HowdoIusejquerywithnodeontheserver?【发布时间】:2016-07-3007:05:33【问题描述】:... 查看详情

将 Gigya API 与 node.js 一起使用

】将GigyaAPI与node.js一起使用【英文标题】:UsingGigyaAPIwithnode.js【发布时间】:2011-11-0621:42:40【问题描述】:对于我的一个项目,我想尝试将Gigya作为我的社交网络连接提供商,并且正在使用Node.js编写我的应用程序。有人做过吗?... 查看详情

如何将 Node.js 中的 net 模块与 browserify 一起使用?

】如何将Node.js中的net模块与browserify一起使用?【英文标题】:HowtousethenetmodulefromNode.jswithbrowserify?【发布时间】:2015-08-3003:02:27【问题描述】:我想在客户端(在浏览器中)使用来自Node.js的net模块:varnet=require(\'net\');所以我查... 查看详情

您将如何将 node.js 子进程与 discord.js 一起使用?

】您将如何将node.js子进程与discord.js一起使用?【英文标题】:Howwouldyouusenode.jschildprocesseswithdiscord.js?【发布时间】:2021-09-0118:25:58【问题描述】:所以我有一个用javascript编码的不和谐机器人,它在与数据库交互或进行图像处理... 查看详情

javascript如何将mongodb与node.js一起使用(代码片段)

查看详情

如何将 jsonp 与 node.js express 一起使用

】如何将jsonp与node.jsexpress一起使用【英文标题】:Howtousejsonpwithnode.jsexpress【发布时间】:2013-08-1609:31:01【问题描述】:我正在尝试使用node.js制作三星智能电视应用程序。在我的项目中,我想让我的应用程序与服务器pc通信。根... 查看详情

如何将 Mongoose/Mongodb 与 node.js- 护照身份验证一起使用

】如何将Mongoose/Mongodb与node.js-护照身份验证一起使用【英文标题】:HowtouseMongoose/Mongodbwithnode.js-passportauthentication【发布时间】:2022-01-0814:22:48【问题描述】:我正在构建我的第一个全栈node.js应用程序,我想使用护照进行身份验... 查看详情

如何将 Asterisk ARI 与 socket.io 和 Node.js 一起使用

】如何将AsteriskARI与socket.io和Node.js一起使用【英文标题】:HowtouseAsteriskARIwithsocket.io&Node.js【发布时间】:2016-01-0207:27:24【问题描述】:最近开始接触星号、Linux、node.js和最近的socket.io,以便我最终可以为星号制作实时Web应用... 查看详情

请求新页面时如何将 AngularJS 路由与 Express (Node.js) 一起使用?

】请求新页面时如何将AngularJS路由与Express(Node.js)一起使用?【英文标题】:HowtouseAngularJSrouteswithExpress(Node.js)whenanewpageisrequested?【发布时间】:2012-10-2416:58:13【问题描述】:我正在使用Express,它从静态目录加载AngularJS。通常,我... 查看详情

如何将 REST 与 Node.js 和 AngularJS 一起使用在不同的端口上?

】如何将REST与Node.js和AngularJS一起使用在不同的端口上?【英文标题】:HowtouseRESTwithNode.jsandAngularJSbeingondifferentport?【发布时间】:2013-03-0907:00:55【问题描述】:我正在尝试了解Angular和Node.js在后端的合作。但是我不知道如何使用... 查看详情

尝试将谷歌云功能与 node.js 一起使用时,admin.firestore 不是一个功能

】尝试将谷歌云功能与node.js一起使用时,admin.firestore不是一个功能【英文标题】:admin.firestoreisnotafunctionwhentryingtousegooglecloudfunctionswithnode.js【发布时间】:2018-03-2214:41:55【问题描述】:这是node.jsindex.js文件的标题:constfunctions=re... 查看详情

将 Socket.IO 与 Apache、Node.js、SSL 和 CloudFlare (HTTP 500) 一起使用

】将Socket.IO与Apache、Node.js、SSL和CloudFlare(HTTP500)一起使用【英文标题】:UsingSocket.IOwithApache,Node.js,SSLandCloudFlare(HTTP500)【发布时间】:2020-11-2222:48:01【问题描述】:我正在创建一个将连接到Node.jsSocket.IOWebSocket的网站。此节点服务... 查看详情

仅使用 Node.js 与将 Node.js 与 Apache/Nginx 一起使用

】仅使用Node.js与将Node.js与Apache/Nginx一起使用【英文标题】:UsingNode.jsonlyvs.usingNode.jswithApache/Nginx【发布时间】:2013-05-2203:54:00【问题描述】:在什么情况下,在实际部署中应该更愿意将Node.js仅用作服务器?当一个人不只想使用N... 查看详情

使用 Electron 编译 node.js 版本时出现问题

...s://github.com/pokusew/nfc-pcsc我已尝试采用另一个与10.16.0node.js一起正常工作的El 查看详情

尝试将 Node.js (Express) 设置为与虚拟主机一起使用,并遇到意外错误

】尝试将Node.js(Express)设置为与虚拟主机一起使用,并遇到意外错误【英文标题】:TryingtosetupNode.js(Express)toworkwithvhosts,andgettingunexpectederrors【发布时间】:2013-06-0200:29:55【问题描述】:我正在尝试将其设置为与几个虚拟主机一起... 查看详情