Python 无服务器函数 Vercel - Next.js
Python Serverless Function Vercel - Next.js
我发现我可以使用 Python 在 Next.js project. Once deployed to Vercel 中创建无服务器函数,它将转换为无服务器函数。
我浏览了文档并找到了一个输出日期的 simple example:
from http.server import BaseHTTPRequestHandler
from datetime import datetime
class handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
self.wfile.write(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')).encode())
return
他们提供了一个实际工作的例子here。
显然,只需将文件 date.py
放入自举 Next.js 项目的 api
文件夹中,您就可以开始比赛了。部署后,Vercel 将检测 Python 文件并将其用作无服务器函数。
部署成功,我根据需要将文件放在pages/api
文件夹中。但是,该功能从未被拾取(下图):
旧版本显然需要 configuration of serverless functions by adding a vercel.json
file。不过现在好像没这个必要了。
我错过了什么?
看完常见问题后。我找到了一个名为 Unmatched Function Pattern 的条目,它指出:
the functions property uses a glob pattern for each key. This pattern must match Serverless Function source files within the api
directory.
它还提到:
if you'd like to use a Serverless Function that isn't written with Node.js in combination with Next.js, you can place it in the api
directory (provided by the platform), since pages/api
(provided by Next.js) only supports JavaScript.
我认为这需要澄清一下。当你 bootstrap 一个带有 create-next-app
的 Next.js 项目时,确实有一个默认的 api
文件夹,但它是在 pages
目录中创建的。
如果您遵循 example they give,您可能会继续在 pages/api
目录中使用受支持的语言(JavaScript 除外)创建一个无服务器函数,并且想知道为什么 Vercel部署时不拾取它。
简而言之,如果您在 Next.js 项目中使用 another language to write a serverless function。请务必将它放在位于项目 root 目录中的 api
文件夹中(如果有 none,请创建一个)。
感谢@evgenifotia 的建议,它为我指明了正确的方向并帮助我解决了这个问题。
注意:您只能有一个 api
目录来存放无服务器函数。您在根文件夹中有一个 pages/api
目录或一个 api
目录,不 支持在一个项目中同时拥有这两个目录。
我发现我可以使用 Python 在 Next.js project. Once deployed to Vercel 中创建无服务器函数,它将转换为无服务器函数。
我浏览了文档并找到了一个输出日期的 simple example:
from http.server import BaseHTTPRequestHandler
from datetime import datetime
class handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
self.wfile.write(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S')).encode())
return
他们提供了一个实际工作的例子here。
显然,只需将文件 date.py
放入自举 Next.js 项目的 api
文件夹中,您就可以开始比赛了。部署后,Vercel 将检测 Python 文件并将其用作无服务器函数。
部署成功,我根据需要将文件放在pages/api
文件夹中。但是,该功能从未被拾取(下图):
旧版本显然需要 configuration of serverless functions by adding a vercel.json
file。不过现在好像没这个必要了。
我错过了什么?
看完常见问题后。我找到了一个名为 Unmatched Function Pattern 的条目,它指出:
the functions property uses a glob pattern for each key. This pattern must match Serverless Function source files within the
api
directory.
它还提到:
if you'd like to use a Serverless Function that isn't written with Node.js in combination with Next.js, you can place it in the
api
directory (provided by the platform), sincepages/api
(provided by Next.js) only supports JavaScript.
我认为这需要澄清一下。当你 bootstrap 一个带有 create-next-app
的 Next.js 项目时,确实有一个默认的 api
文件夹,但它是在 pages
目录中创建的。
如果您遵循 example they give,您可能会继续在 pages/api
目录中使用受支持的语言(JavaScript 除外)创建一个无服务器函数,并且想知道为什么 Vercel部署时不拾取它。
简而言之,如果您在 Next.js 项目中使用 another language to write a serverless function。请务必将它放在位于项目 root 目录中的 api
文件夹中(如果有 none,请创建一个)。
感谢@evgenifotia 的建议,它为我指明了正确的方向并帮助我解决了这个问题。
注意:您只能有一个 api
目录来存放无服务器函数。您在根文件夹中有一个 pages/api
目录或一个 api
目录,不 支持在一个项目中同时拥有这两个目录。