无法使用工作区将 Next.js monorepo 部署到 Vercel

saa*_*adq 8 next.js vercel

npm当我尝试使用或工作区将现有 Nextjs 应用程序转换为单一存储库时,我遇到了 Vercel 部署问题yarn。更改为 monorepo 后,我的构建由于包Not found问题而失败。

\n

您可以在 GitHub 上的monorepo-testing分支中查看完整的存储库。

\n

我基本上有两个 npm 包:

\n
    \n
  • proposals.es:这个包是实际的 Next.js 应用程序(位于./website文件夹中)
  • \n
  • @common/components:这个包包含简单的React组件(位于./common/components文件夹中)
  • \n
\n

当前的文件夹结构如下所示:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 next-env.d.ts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package-lock.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 components \n\xe2\x94\x82       \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.ts\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json \n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 website \n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 next.config.js\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n
Run Code Online (Sandbox Code Playgroud)\n

为了使应用程序正确安装并在本地成功运行,我npm install --workspaces从根级别运行,然后npm run dev从内部运行website以启动服务器。

\n
\n

我已完成以下步骤来尝试让这个新的 monorepo 结构发挥作用:

\n\n
\n

在尝试自动部署到 Vercel 后,我最终收到此错误git push

\n
Installing dependencies...\nDetected `package-lock.json` generated by npm 7...\nnpm ERR! code E404\nnpm ERR! 404 Not Found - GET https://registry.npmjs.org/@common%2fcomponents - Not found\nnpm ERR! 404 \nnpm ERR! 404  \'@common/components@*\' is not in this registry.\n
Run Code Online (Sandbox Code Playgroud)\n

我的 Vercel 设置在这里:

\n

在此输入图像描述

\n

所有设置均为默认设置,除了根目录设置为website. 我认为问题可能是它没有用于npm install --workspaces安装,但是我尝试将我的 Vercel 项目中的安装脚本更改为npm install --workspaces以及cd ../../ && npm install --workspaces但两者都会出错。

\n

我觉得我可能做了一些根本错误的事情,所以如果有人对如何解决这个问题有任何提示或建议,我们将不胜感激。谢谢!

\n

saa*_*adq 7

问题似乎在于将npm工作区与 Next.js 一起使用...当我切换到使用yarn工作区的最小 POC 时,它似乎正在工作。我将尝试将所有内容转换为yarn现在使用,看看之后是否会更好,一旦这样做,我将在这里更新。


编辑:现在能够成功部署这两个应用程序,并且我能够从它们导入我的通用包。

回购协议: https: //github.com/saadq/proposals.es