我正在尝试使用Node调试包含一些JQuery的Javascript文件。但是在加载文件时,它在$上无法识别。
我已将JQuery安装到本地软件包(npm install jquery -save-dev
)。
“ npm jquery -version
”的结果是6.9.8
代码:
$("#modalAddRole").on("modal:visible", function () {
$("#roleName").val("");
$("#roleName").focus();
});
答案 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加载到其中。
要使jQuery在Node中工作,需要一个带有文档的窗口。 由于Node本身不存在这样的窗口,因此可以通过以下方式来模拟 jsdom之类的工具。这对于进行测试很有用。
require("jsdom").env("", function(err, window) { if (err) { console.error(err); return; } var $ = require("jquery")(window); });
但是,这似乎是使调试环境运行的一种非常复杂的方法。假设浏览器中有代码的生产环境,那么在浏览器中调试会更有意义。
浏览器具有内置的出色调试工具,由于调试环境与生产环境明显不同,因此模拟浏览器默认情况下的所有操作可能会使调试更加困难。