Nodejs 运行出现 TypeError: $.ajax is not a function 错误按照 stackoverflow 的答案做还是出错请问是什么原因?
Nodejs 运行出现 TypeError: $.ajax is not a function 错误按照 stackoverflow 的答案做还是出错请问是什么原因?
我想用 nodejs 运行一个简单网络请求, 代码如下 保存为 test.js 文件
var $ = require("jquery");
var headers = {
'Accept':'application/json',
'Authorization':'string'
};
$.ajax({
url: 'https://api.flaticon.com/v2/total/icons',
method: 'get',
headers: headers,
success: function(data) {
console.log(JSON.stringify(data));
}
})
初始化 note js 环境用的命令是
npm init
and npm install jqurey
之后运行node test.js
文件出现错误
$ node test.js
d:\python_project\node_test\test.js:10
$.ajax({
^
TypeError: $.ajax is not a function
at Object.<anonymous> (d:\python_project\node_test\test.js:10:3)
at Module._compile (internal/modules/cjs/loader.js:1151:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
我在 StackOverflow 找到了比较合适的问题 https://stackoverflow.com/questions/18271251/typeerror-ajax-is-not-a-function
里面提示的方法就是 npm instal jquery
但是我这边还是没有成功, 之前 jquery 已经安装过了,
我的文件目录是这样的
─node_modules
└─jquery
├─dist
├─external
│ └─sizzle
│ └─dist
└─src
├─ajax
│ └─var
├─attributes
├─core
│ └─var
├─css
│ └─var
├─data
│ └─var
├─deferred
├─effects
├─event
├─exports
├─manipulation
│ └─var
├─queue
├─traversing
│ └─var
└─var
但不知道错在哪里,所以请教一下
jQuery 主要还是 DOM 操作,用于浏览器端,运行在 node 环境下可以使用 axios,request 等其他请求库
服务端运行不了 jquery.
服务端可用使用 axios
jquery 可以跑在 nodejs 上?
你直接换成 fetch 就可以了
https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch
fetch(‘http://example.com/movies.json’)
.then(function(response) {
return response.json();
})
.then(function(myJson) {
console.log(myJson);
});
直接上 axios
jquery 可以跑在 nodejs 环境了吗? ajax 在 nodejs 环境有吗?
用内置的 http 模块
https://www.jianshu.com/p/ea0c6ce04cd4
或者用楼上说的 axios 、fetch
先 console 下 $,看返回什么。
jq 的 ajax 是基于 XMLHttpRequest 的 node 里没有这个
槽点有点多
python_project / node_test
node / jquery
另, jquery 在 node 环境下返回的是一个 factory, 只要你传给这个 factory 一个仿真的 window / document 对象, 则可以得到一个同样仿真的 jquery 实例
不知道是不是因为用了插件的问题, 没法给各位感谢, 这里谢谢各位的帮助, 就是在 node 中没有 jquery 的问题。
在 Node.js 环境中遇到 TypeError: $.ajax is not a function
错误,通常是因为你尝试在服务器端使用 jQuery 的 $.ajax
方法,而 jQuery 主要是为浏览器环境设计的。Node.js 并没有原生的 DOM 或浏览器对象模型(BOM),因此直接使用 jQuery(尤其是其 DOM 操作和 AJAX 功能)会失败。
解决方案
-
确认环境: 确保你的代码运行在正确的环境中。如果你需要在 Node.js 中进行 HTTP 请求,应使用 Node.js 的原生模块如
http
或第三方库如axios
。 -
使用 Node.js 的 HTTP 模块: 以下是一个使用 Node.js
http
模块进行 GET 请求的示例:const http = require('http'); const options = { hostname: 'example.com', port: 80, path: '/', method: 'GET' }; const req = http.request(options, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { console.log(data); }); }); req.on('error', (e) => { console.error(`Problem with request: ${e.message}`); }); req.end();
-
使用第三方库如 Axios: 如果你更喜欢使用 Promise 风格的 API,可以考虑使用
axios
:const axios = require('axios'); axios.get('http://example.com') .then(response => console.log(response.data)) .catch(error => console.error(error));
确保在 Node.js 项目中安装 axios
(如果使用):npm install axios
。