当前位置: 首页 > news >正文

建站教程流程图百度搜索引擎链接

建站教程流程图,百度搜索引擎链接,网络营销做得好的品牌,卫浴品牌排行榜前十名前言 最近几天用 next.js 开发了一个小项目,之前的项目基于 next.js 时,我都是使用的 jsx 的方式进行开发。而这次给客户升级,我升级为了 tsx 的方式进行开发,并且把 next.js 升级到了最新的 v15 版本。在开发过程中,…

前言

最近几天用 next.js 开发了一个小项目,之前的项目基于 next.js 时,我都是使用的 jsx 的方式进行开发。而这次给客户升级,我升级为了 tsx 的方式进行开发,并且把 next.js 升级到了最新的 v15 版本。在开发过程中,遇到几个小坑,这里记录一下。

NEXTJS

目录构建

好,我的 nextjs APP 的目录构建如下所示:

src/app
├── article
│   └── [id]
│       └── page.tsx
├── channel
│   └── [id]
│       ├── [page]
│       │   └── page.tsx
│       └── page.tsx
├── layout.tsx
└── single└── [id]└── page.tsx

好,以上路径匹配路由为

# 首页
/
# 栏目页面
/channel/[id]
# 栏目分页页面
/channel/[id]/[page]
# 文章页面
/article/[id]
# 其他省略。

坑1,在页面中获取动态 id 失败

一开始,我用一下代码获取动态 id,结果获取失败。

export type PageChannelParamsTypes = {params: {id: stringpage?: string}
}export default async ({ params }: PageChannelParamsTypes) => {const { id, page: paramPage = 0 } = params//...
}

用 DeepSeek 和 Claude 3.5 两个 AI 问了半天,都解决不了,无奈,查询官方文档,最终解决了问题。调整后的代码如下:

export type PageChannelParamsTypes = {params: {id: stringpage?: string}
}export default async ({ params }: PageChannelParamsTypes) => {const { id, page: paramPage = 0 } = await params//...
}

OK, 终于可以获得 id 等参数了。我告诉 DeepSeek ,这里需要加一个 await ,DeepSeek 跟我犟嘴,非说我的代码是错误的。。。。

不管它,终于跑起来了。

坑2, 在编译过程中,提示出现失败

终于,把项目开发差不多了,准备编译一下,开心的运行了 pnpm run build 命令,然后我心拔凉拔凉的,编译失败,有如下报错:

 next build▲ Next.js 15.1.8Creating an optimized production build ...✓ Compiled successfullyLinting and checking validity of types  ...Failed to compile.src/app/article/[id]/page.tsx
Type error: Type 'PageParamsTypes' does not satisfy the constraint 'PageProps'.Types of property 'params' are incompatible.Type '{ id: string; }' is missing the following properties from type 'Promise<any>': then, catch, finally, [Symbol.toStringTag]Next.js build worker exited with code: 1 and signal: null

继续问 AI,答非所问,乱改一通。全部拒绝后,再次翻阅官方文档,终于解决了问题,最终代码如下:

export type PageChannelParamsTypes = {params: Promise<{id: stringpage?: string}>
}export default async ({ params }: PageChannelParamsTypes) => {const { id, page: paramPage = 0 } = await params//...
}

在类型定义的时候,需要给 id 和 page 这个对象,包裹上 Promise 才能通过编译。并且,在编辑器里,不再提示这个 await 是多余的了。

编译结果
最终顺利通过编译。

官方文档

官方文档地址如下:https://nextjs.org/docs/app/api-reference/file-conventions/page#params-optional
官方文档截图

小结

有时候,尤其是 AI 开始瞎编乱造时,一定要查阅官方文档,不能过度信赖 AI。

也怪我自己看得不仔细,第一次看的时候,只注意到了 await,没注意到上面还有一个 Promise 最终在一个坑里被埋了两次。

哎~还是自己用 nextjs 用得少的缘故。

各位看官,你在开发的过程中遇到过什么坑呢,欢迎在评论区交流!顺便用发财的小手点一下赞吧!谢谢!

http://www.dtcms.com/a/448815.html

相关文章:

  • 网站logo制作教程网站地图制作视频教程
  • 网站建设有什么意义有个网站可以学做ppt模板
  • hyip网站开发wordpress主题汉化语言包
  • 网站建设行业发展状况手机wap文字游戏枭雄
  • 深圳品牌网站设计专家桂林生活网新闻
  • 如何在阿里云上建设网站微信推广工具
  • 安全联盟这种网站建设慈溪白云小学班级网站建设
  • 哈尔滨免费做网站网站无域名注册人id
  • 姚孟信通网站开发中心制作公众号流程
  • 快速网站推广做吉祥物设计看什么网站
  • 提供网站空间服务器网络营销推广方法范文
  • 桐梓网站建设北京百度总部电话
  • 凡客网站建设支付宝网站开发流程
  • 包头焦点网站建设腾讯云网站搭建
  • 河南金城建设工程有限公司网站建行网站首页登录
  • 做网站 花园路国贸vps装网站管理系统
  • 广州做网络服装的网站建设网站策划书的撰写流程
  • 织梦做的网站好优化品牌设计工作室
  • 做怎么网站推广专做视频和ppt的网站
  • 空间设计师网站手机版百度入口
  • 网站多少页面合适全球搜索引擎市场份额
  • 国外哪个网站做c 挣钱推广普通话标语
  • 蓬莱做网站价格网站头部设计
  • 中国建设监理协会网站查询成绩wordpress 视频 去广告插件下载
  • 上海专业做网站推广的公司静态网页做的网站怎么发到网上
  • 别人的网站是怎么做的网站设置不能通过链接访问
  • 重庆站外推广网站网站设计评分标准
  • 网站闭站网站建设 系统维护
  • 东莞短视频推广是的无锡网站关键词优化
  • 网站开发公司赚钱么辽宁建设工程信息网、