[Vercel部署异常] 改用官方 Notion API 获取Notion的数据
为什么提出这个新的特性改动 NotionNext 用的应该是方案A:“渲染公开页”的模式(如 react-notion-x + notion-client 读取公开页),只需要一个 NOTION_ROOT_PAGE_ID,就可以取notion page里面的数据。 缺点:
- 没有用notion api的方式去取notion的数据,造成网站老是因为取不到数据而奔溃。比如现在。
- 没有数据库查询 → 分类、标签、分页、搜索都要自己实现/改写,维护成本高,
- 且 Notion 的公开接口并非官方稳定 API。
描述一下你推荐的解决方案 方案B: 改用官方 Notion API:用集成 token + 数据库 ID,在构建/ISR 拉数据并静态化,避免依赖 /api/v3。 https://developers.notion.com/docs/create-a-notion-integration 以后我们把自己的Integration secret id 加进去Vercel Environment variable就可以了。 好处:
- 用官方 Notion API(integration)」不会把我们的数据库暴露给爬虫。
- 开发量稍大,但更稳、更私密、可控;推荐作为长期方案。
- 至少稳定,不会老奔溃。
描述一下你考虑过的其它替代解决方案 简要说明你所有想过的有可能解决此问题的方案。
补充说明 补充与此特性相关的内容
需求+1
需求+1
长远方法是替换API方案。此功能开发周期会长一些,将列入后续计划。
快速方法是替换一下函数: 参考:https://github.com/NotionX/react-notion-x/issues/659
需求+1
长远方法是替换API方案。此功能开发周期会长一些,将列入后续计划。
快速方法是替换一下函数: 参考:NotionX/react-notion-x#659
我居然没有找到代码有调用syncRecordValues的地方
关注
一个简单粗暴的补丁已提交,暂时应对此问题: https://github.com/tangly1024/NotionNext/pull/3568
更新至最新的main分支代码,测试一下此功能。
大佬牛皮,正常了。
大佬牛皮,正常了。
你是怎么改的?
一个简单粗暴的补丁已提交,暂时应对此问题: #3568
更新至最新的main分支代码,测试一下此功能。
我根据 @https://github.com/tangly1024/NotionNext/commit/7bafaaa7e9185a9941694d25ad252542cccd71b6 去 lib\notion\getNotionAPI.js 加上了这些代码 ,然后重新vercel 部署也还是不行啊
return new NotionLibrary({
activeUser: BLOG.NOTION_ACTIVE_USER || null,
authToken: BLOG.NOTION_TOKEN_V2 || null,
userTimeZone: Intl.DateTimeFormat().resolvedOptions().timeZone
userTimeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
kyOptions: {
// 全局 Ky 配置
hooks: {
beforeRequest: [
(request) => {
const url = request.url.toString()
if (url.includes('/api/v3/syncRecordValues')) {
return new Request(
url.replace('/api/v3/syncRecordValues', '/api/v3/syncRecordValuesMain'),
request
)
}
return request
}
]
}
}
})
}
大佬牛皮,正常了。
同, 更新了https://github.com/tangly1024/NotionNext/pull/3568
还是部署失败了
主要就是把syncRecordValues改成syncRecordValuesMain,更新就正常啦。
感谢,更新Fork后自动部署,搞定了