您知道Netlify功能在更名为同名使用其他外壳时可能会破坏吗?我肯定没有。
什么是Netlify功能?
如果您知道AWS lambda或GCP云功能是什么,那么Netlify功能对您来说不会是陌生人。 NetLify功能是由NetLify的基础架构提供支持的无服务器功能。这些功能旨在使您和我能够快速构建和部署无服务器应用程序,而无需管理基础架构或扩展问题。
我们可以使用NetLify函数的常见方法之一是服务Next.J.等框架中定义的API路由。假设我想为我的前端应用程序创建一些端点,例如/api/toast/<id>
。在这种情况下,Next.js使您可以在/pages/api
目录下的同一根目录中创建路由。您可以阅读有关here的更多信息。
这是一个错误吗?
我一直在尝试NetLify功能,以便在这里和那里测试一些API,以查看将集成到项目中的容易性。随着时间的流逝,我定义的一条路线停止了实时部署。 最糟糕的是它在本地工作。
这条路线是dynamic API route,它采用了一个名为toastId
的ID,因此我可以通过ID来获取一块吐司(这是一个简单的测试应用程序,不用担心)。
export default async (req: NextApiRequest, res: NextApiResponse) => {
try {
const { toastId } = req.query;
// Fetch the piece of toast by id and do something with it...
} catch (ex) {
// ...
}
};
浏览GIT历史记录以查看可能破裂的变化,这并没有给出太多的暗示 - 我如何删除了它,也没有记录我本地部署的价值。
有帮助的是记录我的测试应用程序已部署实例的值。事实证明,我对从[toastid].ts
到[toastId].ts
的动态路线文件的重命名损坏了我最初部署到Netlify的内容。当我在本地运行服务器时,壳体更改如预期的。但是,部署以净化后没有反映。结果,我的路线无法使用以下代码段来提取路径参数:
const { toastId } = req.query; // `toastid` was being populated instead
将文件从[toastId].ts
重命名为[toastid].ts
后,该路线再次工作。
现在,这是一个错误还是无证行为?不幸的是,我还没有在Netlify和Next.js文档或Stackoverflow和GitHub讨论中找到答案。请让我知道你们中的任何一个!
从我的角度来看,Windows文件系统中的命名不是对大小写的敏感性,但是许多UNIX系统是。我很想知道这是否影响了他们对他们如何用不同的套管处理名称的决定。一种可能性是,他们想将所有名称映射到同一功能上,以免在运行不同操作系统的不同开发人员部署时破裂。但这只是一个想法。
tl; dr
您在下一个app App中为路由选择的名称很重要。当您在本地处理它时,可能并不明显,但是诸如Netlify这样的怪癖可以将扳手扔进部署的应用程序中。
感谢您的阅读!
ð感谢您抽出宝贵的时间查看这篇文章。有关此类内容的更多内容,请转到我的实际blog。随时在LinkedIn上与我联系,然后在Github上关注我。