Skip to content

在Heroku上部署Deno项目

Published: at 06:35 PM

Heroku 是一个免费的云端环境,支持 Node.js, Php, Go 等等,不过目前还没有直接支持 Deno

端口

首先要解决的是端口的问题, Heroku 内部给的运行时是随机分配一个端口, 因此需要把我的 http 服务监听在 Heroku 给的端口。只需要在运行命令中加入指定端口就行了。

在根目录创建文件 Procfile 写运行命令, 部署上去后 Heroku 会自动读取内容并运行

web: deno run -A --unstable ./main.ts --port=${PORT}

我的 main.ts

import app from "./app.ts";
import { parse } from "https://deno.land/std/flags/mod.ts";
const { args } = Deno;
const DEFAULT_PORT = 3702;
const argPort = parse(args).port;

app.start({ port: argPort ? Number(argPort) : DEFAULT_PORT });

console.log(`http://localhost:${argPort ? Number(argPort) : DEFAULT_PORT}`);

部署

Buildpack

Heroku 没有直接支持 Deno, 所以无法下载依赖和部署环境, 好在可以自定义 Buildpacks 来支持 Deno

Heroku 的控制面板中的项目 settings -> Buildpacks 中添加 Deno 的 Buildpack

https://github.com/chibat/heroku-buildpack-deno.git

Deno 版本

在根目录中创建 runtime.txt, 可以指定运行的 Deno 版本, 例如

v1.8.3

不指定版本就是默认最新的正式版本了