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

使用JavaScript+Express调用API时出现Object not found错误求助

问题排查与解决方案

以下是几个可能导致"Object not found"错误的核心排查点及修复方案:

1. 静态文件服务的路径问题

你使用了相对路径./public配置静态文件服务,但Node.js的相对路径是基于启动服务时的工作目录,而非index.js所在目录。一旦启动服务的位置不是项目根目录,就会找不到public文件夹。改成绝对路径更稳妥:

import express from "express";
import path from "path"; // 引入path模块

const app = express();
// 用绝对路径指向public目录
app.use('/', express.static(path.resolve(__dirname, './public')))

2. 服务启动的端口问题

检查process.env.PORT是否有正确赋值。如果环境变量未设置,app.listen可能启动失败或使用默认端口但你没注意到。给端口加个默认值:

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => { 
    console.log(`Express is now Live on port ${PORT}.`) 
});

确保控制台能正常输出启动日志,确认服务已成功运行。

3. 前端请求的错误处理

当前前端代码未处理HTTP错误状态(比如404),只要响应状态不是2xx,response.json()就会抛出错误,可能被你看到的"Object not found"信息掩盖。修改script.js添加错误捕获:

const getData = async () =>{
  console.log('Hello from script.js')
  try {
    const response = await fetch('/api/ethereum')
    if (!response.ok) {
      throw new Error(`请求失败,状态码: ${response.status}`);
    }
    const data = await response.json()
    console.log(data)
  } catch (err) {
    console.error('请求出错:', err);
  }
}

getData()

这样能精准定位是后端返回404,还是其他请求层面的问题。

4. 后端API的错误处理

后端调用Random User API时也未做错误捕获,若该API请求失败,后端会直接返回错误响应或崩溃。给后端接口加上错误处理:

app.get("/api/ethereum", async (req, res) => {  
  try {
    let url = new URL('https://randomuser.me/api/')
    const response = await fetch(url.href)
    if (!response.ok) {
      throw new Error(`第三方API请求失败: ${response.status}`);
    }
    const data = await response.json()   
    res.send(data) 
  } catch (err) {
    console.error('后端接口错误:', err);
    res.status(500).send({ error: '服务器内部错误' });
  }
});

优先排查静态文件路径和服务启动状态,这是导致前端请求404最常见的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:33:33