我正在尝试使用JavaScript / Node.js构建控制台应用程序,以下script.js在编译时会抛出ReferenceError: $ is not defined
:
//user input from command line
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("Would you like to see which Car Types are available? Please type yes/no ", function(answer) {
// if yes, print search results to console in descending price order
if (answer === 'yes'){
var results= "";
$.getJSON("https://techtest.rideways.com/dave/?pickup=3.410632,-2.157533&dropoff=3.410632,-2.157533", function(data){
results = JSON.parse(data);
});
console.log("The following Car Types are available:", results.options['car_type'], " - ", results.options['price']);
}else{
console.log("No worries, have a nice day!");
}
rl.close();
});
如本文所示; ReferenceError: $ is not defined我希望它是因为缺少JS库。
有没有一种方法可以在我的script.js中调用JS库而无需创建单独的HTML文件?由于我没有构建前端Web应用程序,因此看不到创建HTML文件的意义吗?
答案 0 :(得分:3)
在Node.js代码中,通常不需要使用jQuery,但是如果愿意,它可以作为npm
模块使用。您将其安装(npm install jquery
),然后require
安装它,就像在代码中require
d readline
一样。详细信息(由于jQuery需要DOM环境)in this answer。
但是,这里不需要jQuery。请改用http.request
或https.request
或类似的名称。我怀疑$.getJSON
甚至可以在Node.js中使用。
答案 1 :(得分:1)
$
看起来像是来自某些jQuery代码的复制/粘贴。代替jQuery,axios将在Node和浏览器中完成工作。 axios
是一个带有承诺的http请求库。首先,将包添加到项目中:$ npm i -s axios
。
获取请求示例:(run it on repl.it)
const axios = require('axios');
main();
function main() {
return exampleRequest().then(renderResponseData)
}
function exampleRequest() {
const url = 'https://techtest.rideways.com/dave/?pickup=3.410632,-2.157533&dropoff=3.410632,-2.157533';
return axios.get(url)
}
function renderResponseData(response) {
console.log(response.data)
}