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

Chrome扩展引入@mtucourses/rate-my-professors模块调用异常求助

Chrome扩展调用Rate My Professor API返回空对象问题

我正在开发一款Chrome扩展,使用@mtucourses/rate-my-professors模块调用Rate My Professor的GraphQL API获取教授评分,并将评分展示在我校课程门户上。在VS Code中运行测试代码时能正常返回教授信息与评分,但移植到Chrome扩展后,basicProfInfo始终为空对象,导致功能失效。我尝试过更换browserify以外的打包工具(如extension CLI),问题依旧。

本地测试代码(可正常运行)

const ratings = require('@mtucourses/rate-my-professors').default;

(async () => {

    const profName = 'Hossein Kassiri';
    const basicProfInfo = await ratings.searchTeacher(profName, 'U2Nob29sLTE0OTU=');

    const id = basicProfInfo[0].id;
    console.log(basicProfInfo);
    //console.log(id);

    // 获取教授平均评分
    const profInfo = await ratings.getTeacher(id);
    const avgRating = profInfo.avgRating;

    //console.log(profInfo);
    console.log(avgRating);
    console.log("https://www.ratemyprofessors.com/professor?tid=" + profInfo.legacyId);

})();

Chrome扩展代码

content.js

const professorLinks = document.querySelectorAll('td[width="15%"] a');

professorLinks.forEach(link => {
  const professorName = link.textContent;
  console.log(professorName);
  
  chrome.runtime.sendMessage({ professorName }, (response) => {

    console.log(response);

    if (response.error) {
      link.insertAdjacentHTML('afterend', `<div>Error: ${response.error}</div>`);
    } else {
      link.insertAdjacentHTML('afterend', `<div>${response}/5</div>`);
    }

  });
});

background.js(已用browserify打包)

const ratings = require('@mtucourses/rate-my-professors').default;
console.log("background.js loaded");

async function getAvgRating(profName) {

  const basicProfInfo = await ratings.searchTeacher(profName, 'U2Nob29sLTE0OTU=');
  
  console.log(basicProfInfo);
  if (!basicProfInfo || basicProfInfo.length === 0) {
    return { error: 'Professor not found' };
  }

  const id = basicProfInfo[0].id;
  const profInfo = await ratings.getTeacher(id);
  const avgRating = profInfo.avgRating;
  console.log(avgRating);
  
  return avgRating;
}

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  console.log('received message from content script:', request);
  console.log(request.professorName);

  getAvgRating(request.professorName).then(response => {
    sendResponse(response);
  });
  return true;
});

问题现象

  • 本地测试时,basicProfInfo输出为包含教授信息的数组,能正常获取评分。
  • 在Chrome扩展的background.js中,basicProfInfo输出为空对象,触发“Professor not found”错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:30:39