Require.js 模块(节点获取)加载上下文错误

Require.js module(node-fetch) load for contex error

我正在制作一个网站,但我正在为 Require.js 苦苦挣扎。 我想要 node-fetch 包:

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

// Getting avatar of random discord user
const token = process.env.TOKEN;

async function fetchit() {
  const response = await fetch(`https://discord.com/api/v9/users/410902667318001684`, {
    headers: {
      Authorization: `Bot ${token}`
    }
  })
  if (!response.ok) throw new Error(`Error status code: ${response.status}`)
  else{
   let obj = await response.json()
   console.log(obj.avatar)
  }
  
}
fetchit()

我得到这个错误:

Error: Module name "node-fetch" has not been loaded yet for context: _. Use require([])
https://requirejs.org/docs/errors.html#notloaded

我尝试使用 const fetch = require(['node-fetch']),但出现另一个错误:

Error: Script error for "node-fetch"
https://requirejs.org/docs/errors.html#scripterror

这是我的 HTML 脚本标签:<script data-main="script.js" src="require.js">

我怎样才能解决这个问题并使其正常工作?

我用的是node-fetch@2.6.6

无法使用Require.JS加载node-fetch

Require.js 是 AMD 模块.

的模块加载器

node-fetch 是一个 Common.JS 模块 (这也取决于 Node.js 提供的 APIs,它们不是在浏览器中可用)。

AMD 和 Common.JS 模块是非常不同的模块格式。他们的加载器不兼容,即使他们都使用名为 require 的函数(他们使用 不同的 名为 require 的函数)。

(从版本 3 开始,node-fetch 已经是 converted to an ECMAScript module 但仍然依赖于 Node.js 并且仍然与 Require.JS 不兼容)。


改用浏览器原生 Fetch APInode-fetch 是一个旨在与其兼容的库,因此您可以在浏览器中使用相同的 API 和 Node.js.