Cloudflare Workers
预设: cloudflare
(switch to this preset)
**注意:**此预设使用 service-worker 语法 进行部署。
请注意: 无法通过 Cloudflare 的环境变量更新 runtimeConfig
(有关更多信息,请参见 #272)。 作为解决方法,您可以在代码中使用 Cloudflare 环境变量作为常量。
登录您的 Cloudflare Workers 帐户并从侧边栏获取您的account_id
。
在您的根目录中创建一个 wrangler.toml
:
name = "playground"
main = "./.output/server/index.mjs"
workers_dev = true
compatibility_date = "2022-09-10"
account_id = "<the account_id you obtained (optional)>"
route = "<mainly useful when you want to setup custom domains (optional too)>"
[site]
bucket = ".output/public"
Testing locally
您可以使用 wrangler2 在本地测试您的应用:
NITRO_PRESET=cloudflare yarn build
# 如果您在项目的根目录中添加了一个像上面一样的“wrangler.toml”文件:
npx wrangler dev --local
# 如果你没有 'wrangler.toml',直接使用:
npx wrangler dev .output/server/index.mjs --site .output/public --local
Deploy from your local machine using wrangler
安装 wrangler2 并登录您的 Cloudflare 帐户:
npm i wrangler -g
wrangler login
使用 cloudflare
预设生成网站:
NITRO_PRESET=cloudflare yarn build
您可以在本地预览:
# 如果你有一个像上面那样的 'wrangler.toml':
wrangler dev
# 如果你没有 'wrangler.toml':
wrangler dev .output/server/index.mjs --site .output/public
发布:
wrangler publish
Deploy within CI/CD using GitHub Actions
根据 the wrangler action docs 创建令牌,并在 GitHub 上的存储库配置中设置CF_API_TOKEN
。
创建 .github/workflows/cloudflare.yml
:
name: cloudflare
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
ci:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
node: [14]
steps:
- uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node }}
- name: Checkout
uses: actions/checkout@master
- name: Cache node_modules
uses: actions/cache@v2
with:
path: node_modules
key: ${{ matrix.os }}-node-v${{ matrix.node }}-deps-${{ hashFiles(format('{0}{1}', github.workspace, '/yarn.lock')) }}
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: yarn
- name: Build
run: yarn build
env:
NITRO_PRESET: cloudflare
- name: Publish to Cloudflare
uses: cloudflare/wrangler-action@2.0.0
with:
apiToken: ${{ secrets.CF_API_TOKEN }}
Cloudflare Pages
预设: cloudflare_pages
(switch to this preset)
**注意:**这是一个实验性预设。
零配置供应商
可以通过零配置与此提供程序集成。 (了解更多
Git integration
如果您将 GitHub/GitLab 集成 与 Pages 一起使用,Nitro 不需要任何配置。 当您推送到存储库时,Pages 会自动构建您的项目,而 Nitro 会检测环境。
Direct Upload
或者,您可以使用 wrangler 将您的项目上传到 Cloudflare。 在这种情况下,您必须手动设置预设:
Deploy from your local machine using wrangler
安装 wrangler 并登录您的 Cloudflare 帐户:
npm i wrangler -g
wrangler login
创建项目:
wrangler pages project create <project-name>
发布:
wrangler pages publish
Cloudflare Module Workers
预设: cloudflare-module
(switch to this preset)
**注意:**这是一个实验性预设。
**注意:**此预设使用 模块语法 进行部署。
模块语法允许您使用 Durable Objects、D1 和 waitUntil
。 您可以通过“event.context.cloudflare”访问模块绑定和上下文。
例如,在您的 wrangler.toml
中添加以下内容:
services = [
{ binding = "WORKER", service = "<service name>" }
]
d1_databases = [
{ binding = "D1", database_id = "<database id>" }
]
Using waitUntil
waitUntil
允许在不阻塞事件的情况下进行缓存写入、外部日志记录等。
// waitUntil 允许在不阻塞事件的情况下进行缓存写入、外部日志记录等
const { cloudflare } = event.context
cloudflare.context.waitUntil(logRequest(event.node.req))
Access env and bindings
const { cloudflare } = event.context
const res = await cloudflare.env.WORKER.fetch('<worker URL>')
D1 usage
const { cloudflare } = event.context
const stmt = await cloudflare.env.D1.prepare('SELECT id FROM table')
const { results } = await stmt.all()