为什么我的 $.getScript 在节点中不起作用?
Why doesn't my $.getScript work in node?
我对 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 上 运行 它,但我在控制台中没有得到任何输出。我在这里做错了什么?我的印象是 done
或 fail
它至少会输出一些东西。但我什么也得不到。有什么想法吗?
我假设 jQuery/$ 是 undefined
。您需要使用以下命令将其安装到您的项目中:
npm install jquery --save
完成后,将 var $ = require('jquery');
添加到文件的顶部。
此外,如果您不在浏览器中工作并且严格使用 Node,那么您将需要使用 require
而不是 jQuery 的 getScript 函数。 getScript更适合浏览器应用。
$.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');
jQuery 可能无法在 Node.js 中工作,因为它在很大程度上取决于浏览器 DOM,Node.js 中不存在(没有 window
对象或其他代码,仅适用于浏览器环境)。此外,您不需要 jQuery 来加载 NPM 包。
相反,您应该这样做:
- 在命令行中导航到项目目录。如果您还没有通过 运行
npm init
并按照说明进行操作,则生成 package.json
。
- 注册
node-svm
,一个 Node.js-compatible 版本的 SVM,作为 运行 npm install --save node-svm
. 的依赖项
- 运行
npm install
下载 node-svm
及其依赖项。它们将被安装到 node_modules
子目录中。
- 在
index.js
或任何项目的入口点(在 package.json
的 main
属性 中定义按照这个例子,你应该很高兴去.
- 运行
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
我对 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 上 运行 它,但我在控制台中没有得到任何输出。我在这里做错了什么?我的印象是 done
或 fail
它至少会输出一些东西。但我什么也得不到。有什么想法吗?
我假设 jQuery/$ 是 undefined
。您需要使用以下命令将其安装到您的项目中:
npm install jquery --save
完成后,将 var $ = require('jquery');
添加到文件的顶部。
此外,如果您不在浏览器中工作并且严格使用 Node,那么您将需要使用 require
而不是 jQuery 的 getScript 函数。 getScript更适合浏览器应用。
$.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');
jQuery 可能无法在 Node.js 中工作,因为它在很大程度上取决于浏览器 DOM,Node.js 中不存在(没有 window
对象或其他代码,仅适用于浏览器环境)。此外,您不需要 jQuery 来加载 NPM 包。
相反,您应该这样做:
- 在命令行中导航到项目目录。如果您还没有通过 运行
npm init
并按照说明进行操作,则生成package.json
。 - 注册
node-svm
,一个 Node.js-compatible 版本的 SVM,作为 运行npm install --save node-svm
. 的依赖项
- 运行
npm install
下载node-svm
及其依赖项。它们将被安装到node_modules
子目录中。 - 在
index.js
或任何项目的入口点(在package.json
的main
属性 中定义按照这个例子,你应该很高兴去. - 运行
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