如何使用 Vercel 修复 Next.js 部署中的“未构建无服务器页面”问题?

5

我正在尝试部署我的NextJs应用程序。过去几天里,我一直在遇到相同的两个错误:

1://并且稍后会出现错误
2:错误:未构建无服务器页面。了解更多:https://err.sh/vercel/vercel/now-next-no-serverless-pages-built
我不知道如何修复它们。如果有人能帮忙解决,我将不胜感激。

这是我的package.json文件:

{
  "name": "my-dev-portfolio",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "next",
    "bulid": "next build",
    "start": "next start",
    "now-build": "next build"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^6.1.1",
    "@fortawesome/free-brands-svg-icons": "^6.1.1",
    "@fortawesome/free-solid-svg-icons": "^6.1.1",
    "@fortawesome/react-fontawesome": "^0.2.0",
    "next": "^12.2.0",
    "react-dom": "^18.2.0",
    "typewriter-effect": "^2.19.0"
  }
}

next.config.json文件:

module.exports = {
    target: "serverless"
}

now.json 文件:

{
    "version": 2,
    "builds": [{"src":"package.json", "use": "@now/next"}]
}

1
你有可以分享的代码吗? - paulogdm
我只是把它放在 @paulogdm 上。 - George Marwanqana
1
你不需要 now.jsontarget。删除这些文件并检查项目设置,看看是否将 Next.js 设置为框架。 - paulogdm
4个回答

8

如果您正在使用较新版本的node,请尝试以下操作

在Vercel仪表板中导航到项目的设置

https://vercel.com/[username]/[project]/settings

按照以下步骤进行修复:

  1. 向下滚动到“Node.js版本”或在页面上搜索“Node.js版本”
  2. 选择一个较新的版本,可能是16x18x,而不是14x
  3. 点击“保存”按钮
  4. 导航回部署https://vercel.com/[username]/[project]/deployments
  5. 点击最近提交的汉堡菜单(三个点)
  6. 然后点击“重新部署”按钮,并确保不选中缓存选项

应用程序现在应该可以成功构建了

请务必将[username]和[project]替换为您的相应的vercel用户名和vercel项目ID


2

关于now.json:您正在使用一种非常老的方法。现在Vercel可以检测您的框架,请查看博客中的公告:零配置部署

对于您正在使用target: serverlessnext.config.js,这也完全不需要。如果您要在Vercel上部署,请将其删除。有兴趣了解的人可以查看https://nextjs.org/docs/advanced-features/output-file-tracing以获取更多有关替代target的更好解决方案的信息。


0

对我来说,这是由Sentry引起的。在本地运行应用程序时,一切正常,但构建时出现了此错误。 当我从最后一行中删除了withSentryConfig并将其修改为:

module.exports = withSentryConfig(nextConfig, SentryWebpackPluginOptions)     

module.exports = nextConfig

它在 Vercel 上重新构建了。

我怀疑这是由 @sentry/nextjs 中的一个 bug 引起的,它在构建时没有正确地将 pageExtensions: ['page.tsx', 'page.ts', 'page.jsx', 'page.js'] 传递给 next.js。


0

您现在不需要 now.json 文件。请将其删除,然后再次尝试部署。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接