我是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
至少会输出一些东西。但我一无所获。有什么想法吗?
答案 0 :(得分:1)
$.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');
答案 1 :(得分:0)
jQuery可能无法在Node.js中运行,因为它在很大程度上取决于浏览器DOM,而Node.js中没有该浏览器DOM(没有window
对象或其他代码,仅适用于浏览器环境)。此外,您不需要jQuery来加载NPM包。
相反,你应该这样做:
package.json
并按照说明生成npm init
。node-svm
注册npm install --save node-svm
,与Node.js兼容的SVM版本,作为依赖项。npm install
以下载node-svm
及其依赖项。它们将安装在node_modules
子目录中。index.js
或您项目的任何入口点(在main
的{{1}}属性中定义)按照此示例操作,您应该很高兴。package.json
并检查控制台输出。node 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);
});
});
答案 2 :(得分:-2)
我假设jQuery / $是undefined
。您需要使用以下命令将其安装到项目中:
npm install jquery --save
执行此操作后,将var $ = require('jquery');
添加到文件顶部。
此外,如果您不在浏览器中工作并严格使用Node,则需要使用require
而不是jQuery的getScript函数。 getScript更适合浏览器应用程序。