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.json文件来配置无服务器功能。但这现在似乎没有必要。
我错过了什么?
看完常见问题后。我找到了一个名为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目录,不支持在单个项目中同时拥有这两个目录。
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |