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

Express.js搭配ScraperApi调用亚马逊商品接口报404及URI错误如何解决

问题原因
  • 模板字符串语法错误:JavaScript 中支持变量插值的模板字符串必须使用反引号()包裹,你代码中baseUrl定义、request请求URL、控制台打印PORT这三处需要插值的位置全部错误使用了单引号,导致变量没有被实际解析,最终生成的请求URI是包含${}`占位符的无效地址,直接触发Invalid URI报错。
  • 接口请求路径错误:你请求的/error路由没有在代码中定义,当前服务端仅暴露了根路径/和商品查询路径/products/:productId,请求未定义的路径自然返回404状态码。
  • 控制台出现的Unchecked runtime.lastError报错属于浏览器端扩展异常,和当前Node.js服务端代码没有关联,多为浏览器安装的插件运行异常导致,可禁用无关插件后验证。
修复方案

修正后完整代码

const express = require('express');
const request = require('request-promise');

const app = express();
const PORT = process.env.PORT || 5000;

const apiKey = '[你的实际ScraperApi密钥]';
// 原单引号替换为反引号,实现变量插值
const baseUrl = `http://api.scraperapi.com?api_key=${apiKey}&autoparse=true`;

app.use(express.json());

app.get('/', (req, res) => {
  res.send('Welcome to Dentel API project');
});

// 获取商品详情接口
app.get('/products/:productId', async (req, res) => {
  const { productId } = req.params;
  try {
    // 原单引号替换为反引号
    const response = await request(`${baseUrl}&url=https://www.amazon.com/dp/${productId}`);
    // 补充JSON解析,返回结构化数据
    res.json(JSON.parse(response));
  } catch (error) {
    // 错误返回添加状态码,方便前端识别
    res.status(500).json({
      message: '商品信息查询失败',
      error: error.message
    });
  }
});

// 原单引号替换为反引号
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

关键修改点

  • 将所有需要变量插值的字符串的包裹符号从单引号替换为反引号,确保apiKey、productId等变量能被正确解析到目标字符串中。
  • 请求接口时使用正确的路径:例如要查询ASIN为B09G9FPHY6的亚马逊商品,请求地址应为GET http://localhost:5000/products/B09G9FPHY6,不要请求不存在的/error路径。
  • 补充返回结果的JSON解析和错误状态码设置,优化接口的可用性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:57:01