集成Swell的Next.js Commerce构建报错:turbo pipeline无public任务
解决Turbo构建时"task
public not found"错误 错误根源
你的/site/package.json中build脚本写的是:
"build": "next build public"
Turbo会将next build后面的public解析为需要在turbo.json的pipeline中定义的任务名称,但你并没有配置名为public的任务,所以触发报错。
修复步骤
1. 修正site的build脚本
Next.js默认会自动识别项目根目录下的public文件夹作为静态资源目录,不需要在next build命令后额外指定。直接修改/site/package.json的build脚本:
"build": "next build"
2. (可选)如果需要自定义静态资源目录
如果你确实要指定非默认的静态资源目录,不要在build命令后加参数,而是在site目录下的next.config.js中配置publicDir(Next.js 12及以上版本支持):
// site/next.config.js module.exports = { publicDir: './your-custom-public-folder' }
3. 验证Turbo配置
确保turbo.json中的next-commerce#build配置正确,该配置已经针对site包的build任务做了依赖和输出设置,无需额外添加public任务:
"next-commerce#build": { "dependsOn": [ "^build", "$COMMERCE_PROVIDER", "$BIGCOMMERCE_STOREFRONT_API_URL", "$NEXT_PUBLIC_SHOPIFY_STORE_DOMAIN", "$NEXT_PUBLIC_SWELL_STORE_ID" ], "outputs": [".next/**"] }
测试修复
修改完成后,重新执行构建命令:
yarn build
内容的提问来源于stack exchange,提问作者taro
相关产品推荐
相关产品推荐

