我正在使用next.js
构建一个网站,它使用Route Handlers
。当我运行npm run build
命令时,它工作得很好,但当我部署到Vercel时,它显示以下错误:TypeError: fetch failed at Object.fetch (node:internal/deps/undici/undici:11457:11) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { cause: Error: connect ECONNREFUSED 127.0.0.1:3000 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16) at TCPConnectWrap.callbackTrampoline (node:internal/async_hooks:130:17) { errno: -111, code: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 3000 } }
Error: Command "npm run build" exited with 1
有人能告诉我问题在哪里吗?浏览器控制台和生成命令中没有错误。下面是我的代码:
import React from 'react'
import { Search } from '@/components'
async function getJobs() {
const res = await fetch('http://localhost:3000/api/jobs');
if (!res.ok) {
throw new Error("Couldn't fetch")
}
const data = await res.json();
return data;
}
export default async function Home() {
const jobs = await getJobs();
return (
<main className='px-6 md:px-8'>
<Search />
<pre>{ JSON.stringify(jobs, null, 2)}</pre>
<span>{new Date().getTime()}</span>
</main>
)
}
export const revalidate = 900;
字符串
任何帮助都是感激的。如果您需要有关此问题的更多信息,请随时询问。先谢了
1条答案
按热度按时间vatpfxk51#
要解决这个问题,在项目根目录下添加一个.env文件,其中环境变量接收'http://localhost:3000'值,然后使用
${process.env.NAME_OF_YOUR_ENV_VARIABLE}/api/jobs
导入到fetch url。然后转到vercel中的 Jmeter 板,并将NAME_OF_YOUR_ENV_VARIABLE的值设置为vercel给出的deploy的基本url。