节点无法加载应用程序,因为它无法识别jQuery

时间:2019-07-27 13:45:48

标签: javascript jquery node.js debugging visual-studio-code

我正在尝试使用Node调试包含一些JQuery的Javascript文件。但是在加载文件时,它在$上无法识别。 我已将JQuery安装到本地软件包(npm install jquery -save-dev)。

npm jquery -version”的结果是6.9.8

代码

$("#modalAddRole").on("modal:visible", function () {
    $("#roleName").val("");
    $("#roleName").focus();
});

2 个答案:

答案 0 :(得分:2)

jQuery操纵dom。

node.js没有dom。

您需要创建一个虚拟dom(不显示)

为此,请使用 jsdom 加载您的网页/应用,然后执行所需的任何dom操作代码。

示例:

const jsdom = require("jsdom");
const {JSDOM} = jsdom;
const jquery = require('jquery');

JSDOM.fromURL("https://url_To_Your_WebPage_Local_Or_Remote.com")
  .then(dom => {
    const $ = jquery(dom.window);
    //your jQuery code here
  })

答案 1 :(得分:0)

  

我已经将JQuery安装到本地软件包

仅安装它是不够的。您需要将其加载到程序中……

const $ = require('jquery');

…,然后$("#modalAddRole")不会做任何事情,除非您将HTML加载到其中。

请参见the documentation

  

要使jQuery在Node中工作,需要一个带有文档的窗口。   由于Node本身不存在这样的窗口,因此可以通过以下方式来模拟   jsdom之类的工具。这对于进行测试很有用。

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

    var $ = require("jquery")(window);
});

但是,这似乎是使调试环境运行的一种非常复杂的方法。假设浏览器中有代码的生产环境,那么在浏览器中调试会更有意义。

浏览器具有内置的出色调试工具,由于调试环境与生产环境明显不同,因此模拟浏览器默认情况下的所有操作可能会使调试更加困难。