【问题标题】:Why doesn't my $.getScript work in node?为什么我的 $.getScript 在节点中不起作用?
【发布时间】:2017-06-19 19:54:52
【问题描述】:

我对 JavaScript 很陌生。我正在尝试执行一个 .js 文件,该文件使用 jquery 来加载其他带有节点的脚本。我的 .js 文件名为 test.js,如下:

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }
    var $ = require("jquery")(window);
    $.getScript("./svmjs/lib/svm.js").done(function(){
        console.log("loaded!")
    }).fail(function(){
        console.log("failed!")
    });
})

我正在尝试使用命令node test.js 在 mac 上运行它,但我在控制台中没有得到任何输出。我在这里做错了什么?我的印象是donefail 至少会输出一些东西。但我什么也得不到。有什么想法吗?

【问题讨论】:

  • 只是好奇:你有什么理由不只是使用require
  • @MikeC 没有特别的原因。这是我在搜索互联网时得到的解决方案。我想为了要求,必须安装脚本?有些脚本是我自己的脚本,我也不知道如何安装。
  • 要使用require,文件必须存在于您的文件系统中,相对于您启动文件的位置。要么使用 npm install 安装它们,就像我假设你使用 jsdom 所做的那样。您甚至需要在服务器端使用 jQuery 是非常罕见的。
  • 不用担心。祝你好运!

标签: javascript jquery node.js jsdom


【解决方案1】:

jQuery 可能无法在 Node.js 中工作,因为它严重依赖浏览器 DOM,而 Node.js 中不存在这种 DOM(没有 window 对象或其他代码,仅适用于浏览器环境)。此外,您不需要 jQuery 来加载 NPM 包。

相反,您应该这样做:

  1. 在命令行中导航到项目目录。如果您尚未通过运行npm init 并按照说明生成package.json,请生成package.json
  2. 通过运行 npm install --save node-svm 将与 Node.js 兼容的 SVM 版本 node-svm 注册为依赖项。
  3. 运行npm install 下载node-svm 及其依赖项。它们将安装到node_modules 子目录中。
  4. index.js 或您项目的任何入口点(在package.jsonmain 属性中定义)按照此示例进行操作,您应该很高兴。
  5. 运行 node index.js 并检查控制台输出。

index.js

var svm = require('node-svm');

var xor = [
    [[0, 0], 0],
    [[0, 1], 1],
    [[1, 0], 1],
    [[1, 1], 0]
];

// initialize a new predictor 
var clf = new svm.CSVC();

clf.train(xor).done(function () {
    // predict things 
    xor.forEach(function(ex){
        var prediction = clf.predictSync(ex[0]);
        console.log('%d XOR %d => %d', ex[0][0], ex[0][1], prediction);
    });
});

输出

0 XOR 0 => 0
0 XOR 1 => 1
1 XOR 0 => 1
1 XOR 1 => 0

【讨论】:

    【解决方案2】:

    $.getScript 用于在浏览器端加载脚本。在 Node.js 中,您有一个更好的工具:require

    直接require 你的模块而不是使用jQuery。事实上,你根本不需要 jQuery。

    改变

    $.getScript("./svmjs/lib/svm.js").done(function(){
        console.log("loaded!")
    }).fail(function(){
        console.log("failed!")
    });
    

    require('./svmjs.lib.svm.js');
    

    【讨论】:

      【解决方案3】:

      我假设 jQuery/$ 是 undefined。您需要使用以下命令将其安装到您的项目中:

      npm install jquery --save

      完成此操作后,将var $ = require('jquery'); 添加到文件顶部。

      另外,如果您不是在浏览器中工作并且严格使用 Node,那么您将需要使用 require 而不是 jQuery 的 getScript 函数。 getScript 更适合浏览器应用程序。

      【讨论】:

        猜你喜欢
        • 2021-09-14
        • 1970-01-01
        • 2017-06-14
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多