返回

Node.js 中 `ReferenceError: fetch is not defined` 错误的终极指南

javascript

Node.js 中解决 ReferenceError: fetch is not defined 错误的完整指南

在 Node.js 中,当尝试使用 fetch() 函数而未正确导入相关模块时,就会出现 ReferenceError: fetch is not defined 错误。本文将提供一个全面的指南,帮助你了解此错误的原因以及如何对其进行修复。

错误原因

fetch() 函数用于从服务器获取资源,它是 node-fetch 模块的一部分。在 Node.js 中,node-fetch 模块并不是内置的,因此必须使用 require() 方法手动导入。如果不导入该模块,就会导致 ReferenceError: fetch is not defined 错误。

解决方案

步骤 1:安装 node-fetch 模块

使用以下命令安装 node-fetch 模块:

npm install node-fetch

步骤 2:导入 node-fetch 模块

在你的 Node.js 脚本中,通过添加以下代码导入 node-fetch 模块:

const fetch = require('node-fetch');

步骤 3:修改代码

确保在导入 node-fetch 模块后才在代码中使用 fetch() 函数。以下是一个经过修改的代码示例:

const fetch = require('node-fetch');

function getMovieTitles(substr){  
  pageNumber=1;
  let url = 'https://jsonmock.hackerrank.com/api/movies/search/?Title=' + substr + "&page=" + pageNumber;
  fetch(url).then((resp) => resp.json()).then(function(data) {
    // ...
  })
  .catch(function(error) {
    console.log(error);
  });   
}

提示

  • 确保你使用的是 Node.js 版本 10.0 或更高版本,因为较早的版本不支持 fetch() 函数。
  • 如果你在浏览器中运行代码,fetch() 函数是内置的。但是,在 Node.js 中,它需要通过 node-fetch 模块导入。

其他信息

常见问题解答

  1. 为什么我需要在 Node.js 中导入 node-fetch 模块?

node-fetch 模块是实现 fetch() 函数功能所需的第三方库。它不是 Node.js 内置的,因此必须显式导入。

  1. 我该如何检查 node-fetch 模块是否已正确安装?

可以在命令行中使用以下命令检查 node-fetch 模块是否已安装:

npm list node-fetch
  1. 我可以将 fetch() 函数用于哪些类型的请求?

fetch() 函数可以用于各种类型的 HTTP 请求,包括 GET、POST、PUT 和 DELETE。它支持多种选项,例如设置标头、正文和超时。

  1. fetch() 函数与 XMLHttpRequest 有什么区别?

fetch() 函数是一个更现代的 API,用于在浏览器和 Node.js 中执行 HTTP 请求。与 XMLHttpRequest 相比,它更易于使用,并且提供了更强大的功能。

  1. 如何处理 fetch() 函数中的错误?

可以使用 .catch() 方法来处理 fetch() 函数中的错误。它接收一个回调函数,该函数在请求失败时执行。