V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
meigesir
V2EX  ›  iDev

部署 nextjs、nuxt vue 到 Cloudflare Page 遇到的坑爹问题,时间和金钱都浪费了

  •  
  •   meigesir ·
    meigesir · 21 天前 · 4001 次点击

    大家可能会说,时间和金钱都浪费了,这么大成本,为什么不在 vps 或者 Dokploy 上部署。

    其实是 Cloudflare 这个菩萨太香了,几乎 0 成本服务器费用,尤其我们要多做项目,这样从成功率更容易成功,所以成本对我们很重要。万一哪个项目火了,我们可以再去宠幸那个项目。

    最近使用 Cloudflare Page 部署项目,遇到部署问题,代价很大。交的学费就是,白白浪费 1 天或几天的时间,到最后还是解决不了这个部署问题,真的很抓狂。接下来我会告诉下唯一的、反直觉、速效的方案。

    其实方案很简单,就是项目做一些改动,尤其大的,要 Cloudflare page 部署一次,如果是线上产品,那就直接非主分支部署,这样只会部署到 preview 分支,不会影响到线上的业务。

    这样如果遇到部署的问题,解决当下的改动或最近的小改动就行了。

    不这样做的代价可能就是以半天的时间为单位浪费,可能还解决不了问题,你说抓不抓狂。而我遇到了两次这样的大问题,这一次更是浪费是时间和钱财,我会告诉你具体的情况。

    我这次是等项目完成之后,想一步 deploy 到 Cloudflare 成功,结果处理了一天都没解决。各种问 AI ,结果 3 分钟,加上 cursor 刚更新,新的调用计费政策,cursor o3 就耗光了一个月的额度,损失几十刀。时间和金钱都浪费了。

    下面两张图是 cursor 的 o3 调用和扣费,当时就把 o3 model 禁了,用不起用不起。

    url=https://ibb.co/vyL24Rj

    url=https://ibb.co/W4Fk720r

    最后我只能沿着 git 提交记录排查,结果最近一次成功部署在 35 次提交之前,很绝望。直接原因是引入了 shadcn-nuxt 这个库,非官方库,某种原因就是部署不了。

    那只能从那个 git 提交点开始改动了,这是最笨又快速方法。毕竟这么多提交记录,变量太大了,AI 也懵逼了,我浪费了时间和 AI 费用,结果问题还是没有解决。

    我上次遇到类似的问题,是部署 nextjs 项目到 Cloudflare page ,哎,结果这次是 nuxt vue 项目,我以为不一样,结果一样折磨我一天时间,最后只能回到之前的 git 提交点,一步一步几十个提交记录,再手工去搬运。

    这是我遇到的 Cloudflare 的两次部署问题,耗费了大量代价:时间和金钱成本,总结出的解决方案,希望可以帮到大家避坑,谢谢~

    也分享记录在了 X: https://x.com/meigesir/status/1923186773833707947

    60 条回复    2025-05-17 20:29:44 +08:00
    K1W1
        1
    K1W1  
       21 天前
    感谢分享
    MacsedProtoss
        2
    MacsedProtoss  
       21 天前 via iPhone   ❤️ 4
    该怎么说呢 一时语塞…
    git hooks 触发 GitHub actions ,里面去跑编译再把产物打包到 cloudflare pages 才是正解 你这纯纯的 ai 项目啥也不懂在这“踩坑”
    Hyxiao
        3
    Hyxiao  
       21 天前
    我去,这 credits 消耗看得都肉疼。。。
    jworg
        4
    jworg  
       21 天前   ❤️ 3
    开始猜谜,你大概是遇到这个问题吗 https://github.com/unovue/shadcn-vue/issues/815 。都写代码的,写这么长感觉重点都没说出来,就好像说我有个大宝贝一样。
    ratazzi
        5
    ratazzi  
       21 天前
    你这在哪部署都会 “踩坑” 坑不一样而已
    Track13
        6
    Track13  
       21 天前   ❤️ 1
    nextjs 部署到 Cloudflare 只有 Static export 这一种方式吧?好像这种方式很多功能就不能用了。
    beyondstars
        7
    beyondstars  
       21 天前
    没听懂,是在 35 次提交之前那个 commit 建一个新分支,然后手动一步一步用手去写后边的 35 个 commit? 要不然我不能理解怎么就“耗费大量代价时间和金钱”,你都知道问题在哪儿了,对症下药不就得了。
    BadFox
        8
    BadFox  
       21 天前
    @jworg 我看了两遍才大概看懂他想表达啥,感觉楼主表达能力确实太堪忧了。
    flydogs
        9
    flydogs  
       21 天前 via iPhone
    一天时间算浪费吗?
    murmur
        10
    murmur  
       21 天前
    也就是说楼主在不看价格的情况下,用了最贵的模型,然后来抱怨 AI 贵了
    bugoftime
        11
    bugoftime  
       21 天前
    page 部署有输出过程日志的,某种原因没成功,应该有报错的
    N0vermber11
        12
    N0vermber11  
       21 天前   ❤️ 4
    表达能力堪忧,token 耗这么快也就合理了(手动狗头
    ooxiaoming
        13
    ooxiaoming  
       21 天前
    老哥有几年经验呀,感觉经验差了点
    HanMu
        14
    HanMu  
       21 天前
    不知道是我理解有问题,还是楼主真该去学学语文了。看的好累==
    esee
        15
    esee  
       21 天前
    看完不知道重点是什么
    jojobo
        16
    jojobo  
       21 天前
    正常的,我当初也贪图 cloudflare 的免费服务,一心想把服务放在 cloudflare 上,折腾了不少时间,而且国内访问还经常出问题,最后还是回到了 vercel
    dilidilid
        17
    dilidilid  
       21 天前
    你要不下次让 AI 帮你精炼一下吧
    sdrpsps
        18
    sdrpsps  
       21 天前   ❤️ 2
    Nuxtjs 没用过不了解...
    现在在 Cloudflare 上部署 Nextjs 有两种方式:
    1. Cloudflare Pages (使用 @cloudflare/next-on-pages 这个库)
    2. Cloudflare Worker (使用 @opennextjs/cloudflare 这个库,更新)

    我个人用下来是使用 Cloudflare Worker 来部署是最好用的,因为 Pages 能做到的 Worker 也能做到。

    在编码过程中,使用 Pages 需要到处 `export const runtime = 'edge';` 才能正常调用 Cloudflare D1/R2 之类的 API ,并且在 edge runtime 也使用不了一些功能;但使用 Worker 就不需要了,对照文档该怎么写就怎么写,不用再考虑 runtime 的东西了。

    在部署前,完全可以先在本机 build 一遍,找到问题再部署嘛
    goldeye0351
        19
    goldeye0351  
       21 天前
    我感觉 cloudflare 的 pages 很好用呀, 我的是 shadc + nextjs15+supabase . 官方有说明的,很好用呀
    meigesir
        20
    meigesir  
    OP
       21 天前
    @K1W1 谢谢楼主兄弟^_^
    meigesir
        21
    meigesir  
    OP
       21 天前
    @MacsedProtoss 谢谢分享,你说的也是一个路子,我这次踩坑是 nuxt 项目部署到 Cloudflare Page ,是直接 Github 仓库 push 分支触发的。会少很多链路,他们官方的方案:wrangler cli 、拖拉文件夹、<b>连 Github 仓库</b>。
    meigesir
        22
    meigesir  
    OP
       21 天前
    @Hyxiao 是的,所以第一时间在 cursor 中把这个 o3 model 禁用了,不干活,一直消耗,感觉解决问题的时候慎用
    meigesir
        23
    meigesir  
    OP
       21 天前
    @jworg 感谢解答。不过报的错不是这一个,因为很多时候做一些新项目,无关框架的,比如这次用的是一个开源的是 vue ,所以 AI 就用 nuxt 框架了,想着 UI 好看一些,集成 shadcn ui ,结果集成的时候,问题出现在了 shadcn-nuxt 上面。毕竟现在只是部署在 cf page ,几乎 0 成本服务器费用。的确我表达不好,不好意思,我语文不好,高考语文 89 分。。。
    meigesir
        24
    meigesir  
    OP
       21 天前
    @ratazzi 嗯,所以,部署到 Cloudflare page 的坑,自己总结一下,防止未来继续踩。
    meigesir
        25
    meigesir  
    OP
       21 天前
    @Track13 应该还有其他方案的,比如要用到 Cloudflare function 做 API
    meigesir
        26
    meigesir  
    OP
       21 天前
    @beyondstars 是的,因为我现在花费大量时间和 AI 调用成本还解决不了,只能最原始的方式,回到 35 次提交之前,去掉 shadcn UI 相关,然后用手写后边的 35 个 commit ,基本上应该是 copy paste ,省一些时间
    meigesir
        27
    meigesir  
    OP
       21 天前
    @BadFox 确实,不好意思,几年后第一次在 V2EX 上写帖子了,确实表达能力也不好,抱歉(。・_・。)ノ I’m sorry~
    meigesir
        28
    meigesir  
    OP
       21 天前
    @flydogs 现在时间成本太高了,一天时间很奢侈的,除非现在还是学生😅
    meigesir
        29
    meigesir  
    OP
       21 天前
    @murmur 之前价格我也是知道的,昨天他们 cursor 刚更新,搞了个 max ,然后那个问题 AI 也没办法,读取、分析循环,一次 6 credit 左右,一下子搞懵逼了
    meigesir
        30
    meigesir  
    OP
       21 天前
    @bugoftime 是的,build 报错,copy log ,丢给 AI ,结果问题没解决,一个月额度没了。。。
    meigesir
        31
    meigesir  
    OP
       21 天前
    @N0vermber11 好吧,我也是第一次遇到这种情况,cursor 都用了一年了。。。
    meigesir
        32
    meigesir  
    OP
       21 天前
    @ooxiaoming 可能前端框架 nuxt 不是很熟悉吧,加上社区的 shadcn-nuxt 集成后,在 Cloudflare page 部署上有问题,然后整个都炸锅了。。。
    meigesir
        33
    meigesir  
    OP
       21 天前
    @HanMu 确实,谢谢提醒,我从小语文就不好,高考也没及格,以后多多注意下语言组织能力~
    meigesir
        34
    meigesir  
    OP
       21 天前
    @esee 抱歉,我只是记录下 Cloudflare 部署踩坑了,不好意思,表达的不是很清晰...
    meigesir
        35
    meigesir  
    OP
       21 天前
    @jojobo 嗯,确实,我现在也是贪图 Cloudflare 的免费服务
    meigesir
        36
    meigesir  
    OP
       21 天前
    @dilidilid 嗯,有道理,谢谢提醒👍🏻
    meigesir
        37
    meigesir  
    OP
       21 天前
    @sdrpsps 谢谢分享。我之前的 nextjs 项目用的是 idoubi 的 shipany cf 分支部署的。确实写新页面要加 `export const runtime = 'edge';` ,worker 也能部署页面吗?我以为只能部署 API 到上面。build 也是一个方法,但是有时候能 build ,deploy 不行。

    这次的 nuxtjs 项目,我现在准备解决 shadcn 之后,然后手动 copy paste 。
    ooxiaoming
        38
    ooxiaoming  
       21 天前
    @meigesir 小问题,都是一步步踩坑过来的,踩多了自然就懂的多了
    meigesir
        39
    meigesir  
    OP
       21 天前
    @goldeye0351 嗯,我之前的 nextjs 也是可以的。这次的 nuxt ,关于 shadcn 有个中间件库 shadcn-nuxt ,不是官方库,所以栽在这上面了。react 还是老牌,各方面资源都是官方库直接支持,少了一些坑吧。
    meigesir
        40
    meigesir  
    OP
       21 天前
    @ooxiaoming 嗯,谢谢。以前都是后端、iOS 做得多,这突然 web nuxt 、nextjs ,整懵了。
    sdrpsps
        41
    sdrpsps  
       21 天前
    @meigesir 之前我也以为 Worker 只能放 API 😂,直到看见他们公众号发布了推文: https://mp.weixin.qq.com/s/QufIjZVBdTykLW_YlvOtOg
    JerryZhi
        42
    JerryZhi  
       21 天前
    nextjs 毕竟是 vercel 家的东西,有很多特调优化可能在 cf 就是没有
    meigesir
        43
    meigesir  
    OP
       21 天前
    @sdrpsps 666 ,不错👍🏻,看他们介绍,是逐步把 pages 好的一面都引入到 worker ,然后再 worker 上打造全栈应用。cf 生态越来越好了。
    meigesir
        44
    meigesir  
    OP
       21 天前
    @JerryZhi 嗯,是的,但是为了省钱只能在 cf ,除非用户起来了😄
    northbrunv
        45
    northbrunv  
       20 天前
    真没必要吧,一台独服一个月也就几十刀贵点一百多算成人民币不到 1000 块钱,64g128g 内存 1t2t 硬盘随便造
    liuhai233
        46
    liuhai233  
       20 天前
    个人比较喜欢前后端分离,后端只写 api
    前端无论用什么 build 成纯静态文件部署

    这样无论如何都能迁移到别的地方,self host 也没任何问题
    JensenQian
        47
    JensenQian  
       20 天前
    cf 老板之前还和 vercel 老板吵起来过
    你可以搜下
    反正 双方公说公有理
    ck65
        48
    ck65  
       20 天前   ❤️ 1
    一个也许 OP 已经知道了的建议:本地用 wrangler dev 模拟环境调通了再提交乃至部署。
    rizon
        49
    rizon  
       20 天前 via Android
    @sdrpsps 我的 nextjs 项目折腾好久也没能在 CF worker 上部署成功,原因不记得了。 可能是 server action 的原因?也不想改造了。
    我 vercel 一个月账单 50 多刀。
    hallDrawnel
        50
    hallDrawnel  
       20 天前
    我的第一遍阅读甚至没看懂你在说什么 LOL 。

    理论上好的开发习惯是每次合并入主干都需要把部署流程跑一遍啊。尤其是项目的话,staging 分支和 production 都需要每次合入都跑部署流程。就可以及时发现问题了。
    amlee
        51
    amlee  
       20 天前
    没看到哪坑爹了,你都没说具体问题
    hzzhzzdogee
        52
    hzzhzzdogee  
       20 天前
    @meigesir #32 具体是什么问题呀, 加入那个包后, nuxt build 会一直失败吗
    meigesir
        53
    meigesir  
    OP
       19 天前
    @northbrunv 主要这些项目没盈利,不想再搞这个成本去覆盖 0 收益的项目,已经做了 4 个小项目了,还是负收益
    meigesir
        54
    meigesir  
    OP
       19 天前
    @liuhai233 嗯,这种确实比较好,但是过小的项目,尤其我这个项目基于开源改造,不能再去搞个前后端分离吧,又是工作量😅
    meigesir
        55
    meigesir  
    OP
       19 天前
    @JensenQian 是的,这个关注过,之前双方在推上交战,火力很大
    meigesir
        56
    meigesir  
    OP
       19 天前
    @ck65 嗯,知道的,dev 没错,错在 build 和 deploy 的时候通不过(cf)
    meigesir
        57
    meigesir  
    OP
       19 天前
    @rizon 嗯,我这次是 nuxt 项目,成本这么多,你应该能赚回来吧。改造确实心累,但是真的省钱,我都做好了新项目几年内没流量,所以成本能省就省,只有域名成本最好,cf 可以满足
    meigesir
        58
    meigesir  
    OP
       19 天前
    @hallDrawnel 你说的分支合并确实很好。这个小项目和分支合并没有关系,是 build 和 deploy 到 cf 上的问题,也就是代码改动的问题。
    meigesir
        59
    meigesir  
    OP
       19 天前
    @amlee 大致是 deploy 到 Cloudflare 遇到的问题,因为这个可能随时会出现问题,跟 Cloudflare 平台有些关系。所以一些改动后,就要尝试 deploy 能否通过,不通过,马上解决。要不沉没成本太高。比如我这次的问题,Cloudflare build error 日志丢给 AI ,几个 AI 都解决不了(o3 、claude 、gemini 2.5 pro)。
    meigesir
        60
    meigesir  
    OP
       19 天前
    @hzzhzzdogee nuxt build 没问题。但是 nuxt config 文件加入一些 shadcn 配置后,在 Cloudflare 就是 build 不行。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2692 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:34 · PVG 19:34 · LAX 04:34 · JFK 07:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.