我try 在NextJS(dev模式)中从API终结点的另一个资源获取数据,并收到以下错误:

error - TypeError: Failed to parse URL from httр://localhost:3000/api/test
    at Object.fetch (node:internal/deps/undici/undici:14152:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async handler (webpack-internal:///(api)/./src/pages/api/checkout.js:8:20)
    at async Object.apiResolver (XXX\node_modules\next\dist\server\api-utils\node.js:372:9)
    at async DevServer.runApi (XXX\node_modules\next\dist\server\next-server.js:514:9)
    ... 5 lines matching cause stack trace ...
    at async XXX\node_modules\next\dist\server\base-server.js:157:99 {
  page: '/api/checkout',
  [cause]: TypeError [ERR_INVALID_URL]: Invalid URL
      at new NodeError (node:internal/errors:399:5)
      at URL.onParseError (node:internal/url:565:9)
      at new URL (node:internal/url:645:5)
      at new Request (node:internal/deps/undici/undici:6947:25)
      at fetch2 (node:internal/deps/undici/undici:13315:25)
      at Object.fetch (node:internal/deps/undici/undici:14150:18)
      at fetch (node:internal/process/pre_execution:241:25)
      at infoAPI (webpack-internal:///(api)/./src/modules/reporting/api/infoAPI.js:17:12)
      at handler (webpack-internal:///(api)/./src/pages/api/checkout.js:8:100)
      at Object.apiResolver (XXX\node_modules\next\dist\server\api-utils\node.js:372:15)
      at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
      at async DevServer.runApi (XXX\node_modules\next\dist\server\next-server.js:514:9)
      at async Object.fn (XXX\node_modules\next\dist\server\next-server.js:828:35)
      at async Router.execute (XXX\node_modules\next\dist\server\router.js:243:32)
      at async DevServer.runImpl (XXX\node_modules\next\dist\server\base-server.js:432:29)
      at async DevServer.run (XXX\node_modules\next\dist\server\dev\next-dev-server.js:831:20)
      at async DevServer.handleRequestImpl (XXX\node_modules\next\dist\server\base-server.js:375:20)
      at async XXX\node_modules\next\dist\server\base-server.js:157:99 {
    input: 'httр://localhost:3000/api/test',
    code: 'ERR_INVALID_URL'
  }
}

以下是我在/src/pages/api/checkout.js中使用的代码:

async function infoAPI() {
  return fetch('httр://localhost:3000/api/test');
}

export default async function handler(req, res) {
  const result = await infoAPI();

  //...

  res.status(200).json({ message: 'success', data: result });
}

httр://localhost:3000/api/test只是一个例子.无论fetch-LOCALHOST或EXTERNAL提供什么URL,错误都是相同的.我需要调用应用程序中的一些外部URL,如下所示.

它能有什么问题呢?

Update:

http.get('httр://localhost:3000/api/test', (res) => {/*...*/})个请求也存在同样的问题:

error - TypeError [ERR_INVALID_URL]: Invalid URL
    at new NodeError (node:internal/errors:399:5)
    at URL.onParseError (node:internal/url:565:9)
    at new URL (node:internal/url:645:5)
    at new ClientRequest (node:_http_client:134:30)
    at request (node:http:97:10)
    at Object.get (node:http:108:15)
    at result (webpack-internal:///(api)/./src/pages/api/checkout.js:15:53)
    ... 
{
  input: 'httр://localhost:3000/api/test',
  code: 'ERR_INVALID_URL',
  page: '/api/checkout'
}

我在Node v19.4.0(Windows 10)上运行Next v13.2.4.

推荐答案

事实证明,该URL实际上是非法的.有时看不见的Unicode字符(如零宽度非连接符U+200C)可能会出现在意想不到的地方,很难找到它们:https://invisible-characters.com/

Javascript相关问答推荐

在Chart.js 4.4.2中移动到不同大小的容器时,图表不会调整大小

在JS中转换mysql UTC时间字段?

v-textfield的规则找不到数据中声明的元素

Python类实现的JavaScript吊坠是什么样子的?

如何在加载的元数据上使用juserc和await中获得同步负载?

如何在JavaScript中通过一次单击即可举办多个活动

如何修复内容安全策略指令脚本-SRC自身错误?

如何在ASP.NET中使用Google Charts API JavaScript将条形图标签显示为绝对值而不是负值

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

如何在ASP.NET项目中使用Google Chart API JavaScript将二次轴线值格式化为百分比

更新动态数据中对象或数组中的所有值字符串

Use Location位置成员在HashRouter内为空

使用插件构建包含chart.js提供程序的Angular 库?

更新Redux存储中的对象数组

如何在和IF语句中使用||和&;&;?

未捕获语法错误:Hello World中的令牌无效或意外

用于部分字符串的JavaScript数组搜索

Jexl to LowerCase()和Replace()

每隔3个项目交替显示,然后每1个项目交替显示

无法使用npm install安装react-dom、react和next