我正在将现有的Next.js项目迁移到Turborepo monorepo。
Next.js项目使用最新的App Router,并且具有服务器端路由和组件,这些路由和组件以前都在Turborepo之外成功构建,但现在似乎无法构建,因为它们被视为客户端代码并且正在加载服务器端节点模块(主要是firebase-admin
)。我在package.json中的依赖项都没有更改版本。
下面是一个应该被视为服务器组件的示例页面。/src/app/example/[document_id]/page.js
:
import { db } from "@/app/api/firebase-admin"
// import components
export default async function Page({ params: { document_id } }) {
const docSnapshot = await db.collection('docs').doc(document_id).get();
if (docSnapshot.exists) {
const data = docSnapshot.data();
return <Document {...data} />
}
return <NotFound />
}
字符串
上面的代码在一个独立的Next.js项目中构建得很好,但是在Turborepo中抱怨像Can't resolve 'fs' in @google/cloud/...
这样的东西,这让我认为它试图为客户端包打包服务器端模块。
任何帮助解决这个问题是非常感谢。
编辑:在这里想提一下,我的项目是根据标准结构的,与示例here相同
1条答案
按热度按时间rbl8hiat1#
从我在turborepo code here中看到的情况来看,您可能需要在下一个项目上方设置Turbo,让turborrepo从那里完成缓存和捆绑的工作。如第6行所示,它明确提到turbo repo的构建依赖于现有的nextjs构建。
希望这能帮上忙。