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

     2023-03-07     37

关键词:

【中文标题】Node.js 和 JQuery:“ReferenceError:$ 未定义”错误。如何在服务器上将 jquery 与节点一起使用?【英文标题】:Node.js & JQuery: "ReferenceError: $ is not defined" error. How do I use jquery with node on the server? 【发布时间】:2016-07-30 07:05:33 【问题描述】:

帮助!我正在尝试在我的 node.js 应用程序中使用 jquery,但是当我尝试使用“$”时,我不断收到错误,说“$ 未定义”......但我在顶部定义了它!这是我所做的:

我从 npm 安装了这两个包,如下所示:

npm install jquery
npm install jsdom

然后我在我的 node.js 应用程序中需要它们:

require("jsdom").env("", function(err, window) 
    if (err) 
        console.error(err);
        return;
    
    var $ = require("jquery")(window);
);
doSomething();

然后我尝试像这样使用它:

function doSomething()
    var deferred = $.Deferred();

我收到以下错误:

var deferred = $.Deferred();
               ^
ReferenceError: $ is not defined

你认为function 是在var $ = 部分之前执行吗?

谢谢!

版本:

节点:4.2.6 快递:4.12.4 jQuery:2.2.3 JSDom:8.3.0

更新:解决方案

这是我最终使用的,基于每个人的回答!

var $;
require("jsdom").env("", function(err, window) 
    if (err) 
        console.error(err);
        return;
    
    $ = require("jquery")(window);
    doSomething();
);

【问题讨论】:

【参考方案1】:

如果在 jsdom.env 函数的边界之外,您的 doSomething 函数就会被声明。 $ 只能在该回调中访问。像这样的东西应该可以工作:

var $;

require("jsdom").env("", function(err, window) 
    if (err) 
        console.error(err);
        return;
    
    $ = require("jquery")(window);
    doSomething();
);

 function doSomething()
    var deferred = $.Deferred();

虽然我认为在回调中声明 doSomething 会更惯用。这样它就可以从外部范围访问 jquery。

require("jsdom").env("", function(err, window) 
    if (err) 
        console.error(err);
        return;
    

    function doSomething()
        var deferred = $.Deferred();
     
    var $ = require("jquery")(window);
    doSomething();
);

【讨论】:

真可惜,我以为我可以把它放在上面而忘记它!这很好用,谢谢:)【参考方案2】:
//make sure $ is available in the global scope
var $;

function doSomething()
    var deferred = $.Deferred();


require("jsdom").env("", function(err, window) 
    if (err) 
        console.error(err);
        return;
    
    // assign it
    $ = require("jquery")(window);

    // you have to call it in here because you are in a callback 
    doSomething();
);

【讨论】:

【参考方案3】:

如果您不需要可用的完整 DOM,而只想解析和抓取/操作 html 元素,那么 cheeriojsdom 更轻量级,并且仍然为您提供类似 jQuery 的 API。

【讨论】:

【参考方案4】:

您需要做的就是在 $ 初始化之后立即将调用 doSomething() 移动到回调函数中。

// define global variable for further usage
var $;

require("jsdom").env("", function(err, window) 
    if (err) 
        console.error(err);
        return;
    

    // initialize global variable
    $ = require("jquery")(window);

    // will work properly here
    doSomething();
);

function doSomething() 
    // using already initialized global variable
    var deferred = $.Deferred();

在您的示例中,您需要注意两件事:

1.异步函数

我们需要保证doSomething只有在$初始化之后才会被调用。

2。变量范围

您声明doSomething 函数的位置是真的很有意义,而在您的示例中doSomething 根本不知道$ 存在。所以我们需要在某个地方(例如全局)定义它来创建一个带有$ 变量的closure。

【讨论】:

node.js 和 jquery web 的 UI [关闭]

】node.js和jqueryweb的UI[关闭]【英文标题】:UIfornode.jsandjqueryweb[closed]【发布时间】:2012-05-3109:24:38【问题描述】:node.js(考虑Web应用程序)是否有任何首选的UI框架?或者这是使用node.js的正交问题?jQuery不错,jQueryUI是不是最常... 查看详情

带有 Node.js 和 jQuery 的 CORS

】带有Node.js和jQuery的CORS【英文标题】:CORSwithNode.jsandjQuery【发布时间】:2012-09-0210:02:30【问题描述】:我需要向不提供javascript的Node服务器发送一些数据。我运行服务器,但从未看到OPTIONS发送,并且Chrome拒绝我的ajax来自不同的... 查看详情

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

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

使用 Node.JS express 和 AJAX 进行 JQuery 自动完成

】使用Node.JSexpress和AJAX进行JQuery自动完成【英文标题】:JQueryautocompletewithNode.JSexpressandAJAX【发布时间】:2013-02-2010:26:27【问题描述】:这是HTML:<!DOCTYPEhtml><html><head><linkrel="shortcuticon"href="/favbar.png"/>< 查看详情

使用 Node.js 和 Socket.IO 单击时的 jQuery 函数

】使用Node.js和Socket.IO单击时的jQuery函数【英文标题】:jQueryfunctiononclickwithNode.jsandSocket.IO【发布时间】:2015-08-0215:00:27【问题描述】:我按照推荐创建了一个简单的聊天应用程序(效果很好),但我无法弄清楚如何使用Socket.IO跨... 查看详情

以 node.js 作为后端的 HTML 中的 jQuery

】以node.js作为后端的HTML中的jQuery【英文标题】:jQueryinHTMLwithnode.jsasbackend【发布时间】:2013-07-1722:36:57【问题描述】:我是jQuery和node.js的新手,这个问题困扰了我几个小时,我搜索了***和谷歌但找不到解决方案。我正在用jQuery... 查看详情

使用 Express、Node 和 JQuery 提交表单

】使用Express、Node和JQuery提交表单【英文标题】:FormsubmissionwithExpress,Node,andJQuery【发布时间】:2019-01-0701:12:21【问题描述】:我对html、express和node.js非常陌生,这些技术是我目前用于Web应用程序的技术,但我在提交表单时遇到了... 查看详情

使用 Browserify 在 Node JS 项目中包含 JQuery Mobile

】使用Browserify在NodeJS项目中包含JQueryMobile【英文标题】:IncludingJQueryMobileinaNodeJSprojectwithBrowserify【发布时间】:2014-02-2103:11:12【问题描述】:我正在编写一个需要jQueryUI和jQueryMobile的NodeJS应用程序。我正在使用Browserify将模块打... 查看详情

使用 jsdom 和 node.js 发布表单

...时间】:2011-09-0922:02:08【问题描述】:我正在使用jsdom、jquery和node.js来抓取网站。有什么方法可以发布表单并使用jsdom获取生成的下一页窗口。这里是代码varhttpAgent=require(\'http-agent\'),jsdom=require(\'jsdom\'),requ 查看详情

node.js 中的 jQuery.ajax()?

】node.js中的jQuery.ajax()?【英文标题】:jQuery.ajax()innode.js?【发布时间】:2012-01-2803:46:30【问题描述】:是否可以在node.js中完全按照语法方式使用jQuery.ajax()?我正在尝试与node.js共享非UI浏览器代码。我不想用我自己的包装器替换... 查看详情

如何集成 CouchApp、Node.JS、Sammy 和 Mustache

...e.couchapp.jsCouchApp并将其推送到我的CouchDB。默认包含Sammy和jQuery。现在,我想为模板添加Mustache,但不知道在哪里?我可以将它用作N 查看详情

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

】将JQuery与node.js一起使用时出错【英文标题】:ErrorsusingJQuerywithnode.js【发布时间】:2012-10-1009:06:56【问题描述】:我在Windows7上运行了全新安装的node.js,我正在尝试运行一个非常基本的JQuery脚本,名为a.js,其中仅包含:require("... 查看详情

jQuery 函数不适用于 node.js 中的 express.js 路由

】jQuery函数不适用于node.js中的express.js路由【英文标题】:jQueryfunctionsnotworkingonexpress.jsroutesinnode.js【发布时间】:2016-01-1602:37:45【问题描述】:我是node.js的新手。我的express.js应用程序结构:|my-application|--app.js|--node_modules|--public|... 查看详情

如何在原生 JavaScript 和 node.js 中使用长轮询?

...gpolling。我四处搜索,但我只找到了如何在JavaScript中使用JQuery来实现它。如何仅使用nativeJavaScript和node.js来实现它?你能指导我 查看详情

Node.js - 提交表单

...通过express将数据发送到node.js(不刷新页面)。如何使用jQuery发送数据?<formaction="/Send"method="post">Username:<inputtype="text 查看详情

使用jasmine和node.js测试客户端javascript代码

给定:客户端javascript代码(在浏览器中运行,使用jquery等)。目前,代码使用Rhino和envjs进行测试。我们想切换到node.js.然而,经过一些研究,找不到任何模仿浏览器的envjs式补充。在“按原样”运行node.js时,甚至缺少像alert()或w... 查看详情

node.js:jsdom 的问题 - jQuery 对象返回未定义

】node.js:jsdom的问题-jQuery对象返回未定义【英文标题】:node.js:problemswithjsdom-jQueryobjectreturnsundefined【发布时间】:2012-08-1806:38:03【问题描述】:我有兴趣为其中一个项目进行一些服务器端DOM操作,因此我决定查看node.js,尤其是j... 查看详情

如何在 node.js 中运行 jQuery [重复]

】如何在node.js中运行jQuery[重复]【英文标题】:HowtorunjQueryinnode.js[duplicate]【发布时间】:2018-08-0605:01:57【问题描述】:我已经尝试过npminstalljQuery--save和我的节点文件var$=require(\'jquery\');但是,当我使用运行我的节点文件时$.getJSON... 查看详情