ReferenceError: fetch 未在 NodeJs 中定义

ReferenceError: fetch 未在 NodeJs 中定义

ReferenceError: fetch is not defined in NodeJs

“ReferenceError: fetch is not defined”发生在fetch()不支持它的环境中使用该方法时——最常见的是 NodeJs。为了解决这个错误,安装并导入node-fetch包,它
fetch()在 NodeJs 运行时提供了一个兼容的 API。

参考错误获取未定义

要解决“ReferenceError: fetch is not defined”,安装并导入
node-fetch包。

如果您的项目没有package.json文件,请在项目的根目录中创建一个:

# 👇️ only run this if you don't have package.json file yet npm init -y

现在安装node-fetch库。

npm install node-fetch

现在您可以像在浏览器中使用
fetch()方法一样导入和使用该模块。

索引.js
import fetch from 'node-fetch'; async function getUser() { try { const response = await fetch('https://randomuser.me/api/'); if (!response.ok) { throw new Error(`Error! status: ${response.status}`); } const result = await response.json(); return result; } catch (err) { console.log(err); } } console.log(await getUser());

在撰写本文时,要在 NodeJs 项目中使用 ES6 模块导入和导出,您必须在文件中将type属性设置为
modulepackage.json

包.json
{ "type": "module", // ... 👇️ rest }
如果您使用 TypeScript,则不必为包安装类型,因为它们默认包含在内。 node-fetch

如果我运行我的 NodeJs 脚本,我会通过调用 API 获得结果。

获取成功

node-fetch软件包的最新版本仅与导入/导出的 ES6 模块语法兼容。如果您使用较旧的 NodeJs 版本,请安装该node-fetch软件包的版本 2。

ReferenceError fetch 未在 NodeJs(旧版本)中定义

仅当您使用较旧的 NodeJs 版本并希望使用require
语法而不是
import/export.

狂欢
npm install node-fetch@2

我们安装了该node-fetch软件包的版本 2。

确保您没有
文件中
type设置属性。modulepackage.json

fetch现在您可以使用旧require功能导入包。

索引.js
// 👇️ Using older require syntax const fetch = require('node-fetch'); async function getUser() { try { const response = await fetch('https://randomuser.me/api/'); if (!response.ok) { throw new Error(`Error! status: ${response.status}`); } const result = await response.json(); return result; } catch (err) { console.log(err); } }

我们必须安装包的版本2才能node-fetch
require我们的 NodeJs 应用程序中使用语法。

最好与客户端和服务器端代码之间的导入保持一致。但是,如果您必须支持旧版本的 NodeJs,这种方法就可以完成工作。

发表评论