You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中node-fetch模块无法正常工作是什么原因,该如何解决?

问题原因和解决方法

一、npm安装报错的问题

你执行npm install node-fetch提示找不到文件/目录,有几个常见原因和对应解决方法:

  • 首先确认执行安装命令的终端路径,和你存放代码的JS文件所在的项目目录一致,你可以先执行cd 你的项目文件夹路径切换到对应目录,再重新执行安装命令
  • 如果当前项目目录下没有package.json文件,先执行npm init -y初始化项目配置,再执行安装命令
  • node-fetch v3及以上版本仅支持ES Module导入规范,如果你用require()的CommonJS语法导入,需要安装v2版本,执行命令npm install node-fetch@2即可。如果你要使用v3版本,需要在package.json中添加"type": "module"配置,同时将导入语句改为import fetch from 'node-fetch'

二、现有代码的问题

你写的请求逻辑也存在问题,会导致无法正常拿到返回数据:
d.json()是异步方法,你漏写了await关键字,会直接返回Promise对象而非解析后的JSON数据,同时你没有做请求错误捕获和状态判断,容易出现未捕获的异常。

修正后的代码示例(适配CommonJS的node-fetch@2版本):

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

async function getUrl(url) {
    try {
        // 等待fetch请求完成
        const d = await fetch(url);
        // 先判断请求响应状态是否正常
        if (!d.ok) throw new Error(`请求失败,状态码:${d.status}`);
        // 等待JSON解析完成,这里必须加await
        const j = await d.json();
        return j;
    } catch (err) {
        console.error('请求异常:', err);
        throw err;
    }
}

// 调用异步函数需要用then或者在另一个async函数内用await接收结果
getUrl(myURL).then(res => {
    console.log('拿到的返回数据:', res);
}).catch(err => {
    // 自定义错误处理逻辑
});

内容的提问来源于stack exchange,提问作者Efe FRK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:06:00