Oh!我的老北鼻,cloudflare似乎不支持nuxt3的ssr部署,扯呼!

Saturday , 2024-9-14 22:28

缘起

早有耳闻cloudflare不是凡物,不得不说其pages大大简化了前端到部署发布流程,于是打算在把当前的nuxt3项目部署上去,一开始都很正常,选择构建预设框架,然后接你都是默认设置即可,

image.png

然后点击开始构建

image.png

到这一步,似乎都没啥问题,该安装安装,该部署部署,但是以老衲多年牛马踩坑经验来看,这大概率是暴风雨之前的宁静,直到部署完成后打开页面一看!(恭喜!你都会抢答啦~)

image.png

我执

于是开始查资料,首先是nuxtcloudflare的部署配置,安装wrangler后,在本地调试,发现信息:

✘ [ERROR] [node-fetch-native] Node.js compatible build ofnode-fetch-nativeis being used in a non-Node.js environment. Please make sure you are using proper export conditions or report this issue to https://github.com/unjs/node-fetch-native. You can setprocess.env.DISABLE_NODE_FETCH_NATIVE_WARNto disable this warning.

大概意思是在非node得环境下运行了node-fetch-native,到这里问题已经开始有点端倪了,网上说有通过node版本解决问题的,但是通过设置.nvmrc为本地的v18.12.1,依然报错。

于是开始转向nitro的部署配置,问题依旧

https://nitro.unjs.io/deploy/providers/cloudflare

没办法最后尝试将ssr配置关闭,然后可以正常访问,也就是说使用纯静态就可以正常部署,如果要ssr使用服务器渲染,则cloudflare似乎是无法支持良好的SEO,nuxt就失去了意义,目前的业务逻辑有用户内容产生,又不太适合使用generate全部生成,那我要这铁棒还有何用?

1
2
3
4
5
export default 
defineNuxtConfig
({
ssr:false
})

缘灭

还是不甘心,gpt跟google都翻烂了,直到看到这个帖子,似乎其他老哥也遇到过这个问题
https://stackoverflow.com/questions/67845521/nuxtjs-ssr-deployment-on-cloudflare-workers
至此我已经在这个问题上消耗了接近一天的时间,于是:世上无难事,只要肯放弃!扯呼~

顺其自然

但是问题还是要解决,如果不想在自己的服务器上浪费资源做部署,目前对nuxt比较友好的就只有vercel了,于是部署之,直接选择框架,无脑下一步直接完成ssr的部署,然后将在cloudflare域名cname解析过去即可!

image.png

image.png