Python 无服务器函数 Vercel - Next.js

Jua*_*rco 4 python next.js vercel

我发现我可以使用 Python 在Next.js项目中创建无服务器函数。一旦部署到Vercel,它将被转换为无服务器功能。

我浏览了文档并找到了一个输出日期的简单示例

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
Run Code Online (Sandbox Code Playgroud)

他们在这里提供了一个现场工作示例。

显然,所需要做的就是将文件date.py放在api引导的 Next.js 项目的文件夹中,然后您就可以开始比赛了。部署后,Vercel 将检测 Python 文件并将其用作无服务器功能。

部署成功,我pages/api根据需要将文件放在文件夹中。但是,该函数永远不会被拾取(下图): vercel 函数输出

旧版本显然需要通过添加vercel.json文件来配置无服务器功能。但这现在似乎没有必要。

我错过了什么?

Jua*_*rco 5

看完常见问题后。我找到了一个名为Unmatched Function Pattern的条目,它指出:

functions 属性为每个键使用 glob 模式。此模式必须与api目录中的无服务器函数源文件匹配。

它还提到:

如果你想将一个非Node.js编写的Serverless Function与Next.js结合使用,可以放在api目录下(平台提供),因为pages/api(Next.js提供)只支持JavaScript。

我认为这需要澄清一点。使用api引导 Next.js 项目时确实有一个默认文件夹create-next-app,但它是在pages目录中创建的。

如果您按照他们提供示例进行操作,您可能会继续在pages/api目录中使用受支持的语言(JavaScript 除外)创建无服务器函数,并想知道为什么 Vercel 在您部署时没有选择它。

简而言之,如果您使用另一种语言在 Next.js 项目中编写无服务器函数。确保将它放在api位于项目目录的文件夹中(如果没有,请创建一个)。

感谢@evgenifotia 的建议,它为我指明了正确的方向并帮助我解决了这个问题。

注意:您只能拥有一个api包含无服务器功能的目录。您在根文件夹中有一个pages/api目录或api目录,支持在单个项目中同时拥有这两个目录。

  • 在项目的根目录中有一个“api”文件夹。这样您就可以使用 Node.js 和 Python 函数。 (4认同)