Nodejs 运行出现 TypeError: $.ajax is not a function 错误按照 stackoverflow 的答案做还是出错请问是什么原因?

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

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

但不知道错在哪里,所以请教一下


11 回复

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 功能)会失败。

解决方案

  1. 确认环境: 确保你的代码运行在正确的环境中。如果你需要在 Node.js 中进行 HTTP 请求,应使用 Node.js 的原生模块如 http 或第三方库如 axios

  2. 使用 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();
    
  3. 使用第三方库如 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

回到顶部