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

如何在TypeScript/React项目中导入并使用MediaWiki JavaScript API?

问题根源与解决方案

核心问题:你安装的mediawiki包并非MediaWiki官方前端库

你通过npm install mediawiki安装的是第三方MediaWiki Bot工具包(版本0.0.11),定位是编写批量编辑的Bot脚本,而非MediaWiki站点前端内置的mw对象——官方文档提及的mw是MediaWiki站点自身在页面中注入的全局对象,不需要通过npm安装,也无法通过import mw from 'mediawiki'导入。

正确实现路径

根据你获取站点分类、分类下页面的需求,分两种场景处理:

场景1:在MediaWiki站点内部开发(如用户脚本、扩展)

直接使用全局mw对象,无需额外安装包:

// 加载MediaWiki API模块并发起请求
mw.loader.using('mediawiki.api').then(() => {
  const api = new mw.Api();

  // 获取所有分类
  api.get({
    action: 'query',
    list: 'allcategories',
    aclimit: 'max'
  }).then(data => {
    console.log('所有分类:', data.query.allcategories);
  });

  // 获取指定分类下的页面
  api.get({
    action: 'query',
    list: 'categorymembers',
    cmtitle: 'Category:你的分类名',
    cmlimit: 'max'
  }).then(data => {
    console.log('分类下的页面:', data.query.categorymembers);
  });
});

场景2:外部React/TS项目调用MediaWiki API

外部项目无法访问MediaWiki内置mw对象,直接通过HTTP请求调用公开API即可:

// 获取所有分类
async function getAllCategories(wikiApiUrl: string) {
  const response = await fetch(`${wikiApiUrl}?action=query&list=allcategories&aclimit=max&format=json`);
  const data = await response.json();
  return data.query?.allcategories || [];
}

// 获取指定分类下的页面
async function getPagesInCategory(wikiApiUrl: string, categoryTitle: string) {
  const encodedTitle = encodeURIComponent(categoryTitle);
  const response = await fetch(`${wikiApiUrl}?action=query&list=categorymembers&cmtitle=${encodedTitle}&cmlimit=max&format=json`);
  const data = await response.json();
  return data.query?.categorymembers || [];
}

// 使用示例
const wikiApiUrl = 'https://你的维基站点地址/w/api.php';
getAllCategories(wikiApiUrl).then(categories => console.log(categories));
getPagesInCategory(wikiApiUrl, 'Category:示例分类').then(pages => console.log(pages));

补充提示

  • 当分类/页面数量超过aclimit/cmlimit上限时,需要解析返回结果中的continue参数,循环发起请求处理分页
  • 若站点需要权限验证,需在请求中携带登录后的Cookie或使用OAuth认证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:42:36