ZEIT-Deployment Basic
文章目录

ZEIT: Deployment Basic

ZEIT 是一个部署平台, 可以部署很多东西, 主要目的是部署一些 Serverless 的项目

一天 1000 次 invokes 用于小项目完全足够

部署

安装 Now

1
cnpm install now --save-dev

客户端部署

部署整个文件夹, 然后就会 自动执行 npm start

CLI 部署

首先

1
now login

登陆, 然后在项目根目录执行:

1
now

就可以开始部署了

本地调试

1
now dev

如果遇到 yarn 无法找到的错误就可以

1
npm i -g yarn

执行过程中会在本地安装模块到 node_modules

部署例子

node 部署

注意 node server 和纯 node 的部署不一样

1
2
3
4
5
{
"version": 2,
"builds": [{ "src": "src/index.js", "use": "@now/node" }],
"routes": [{ "src": "/.*", "dest": "src/index.js" }]
}

node-server 部署

这个是简单 node server 的部署

一定要配置 package.json 里面 scriptsstart , 这个是作为部署后的入口

根目录添加一个文件 now.json :

1
2
3
4
5
6
{
"version": 2,
"builds": [
{ "src": "index.js", "use": "@now/node-server" }
]
}
  • src: 对应的入口文件
  • use: 对应部署模式, 这里的模式就是简单 node server

Appllo GraphQL 部署

1
2
3
4
5
6
7
8
{
"version": 2,
"builds": [{ "src": "index.js", "use": "@now/node" }], // 如果没有这一行就成了文件部署
"routes": [{ "src": "/.*", "dest": "index.js" }]
// 如果没有这一行则无法访问到 graphQL
// 将所有的路由定位到 index.js
// 如果开启了多个端口那么就应该重定位一下
}

正常情况我们是 3000 建立 server 然后 4000 端口建立 graphQL

原本是在 http://localhost:4000/graphql 访问 graphQL, 进行 routes 设置之后就可以在同一个端口或者 alias 访问到了

扩展: Routes 的使用

很简单很简单, 看看就懂了

1
2
3
4
5
6
7
8
9
10
11
12
13
...
"routes": [{
"src": "/.*",
"dest": "src/index.js"
}]
// 将所有根目录的 url 请求 route 到 src/index.js
...
"routes": [{
"src": "/product/(?<id>[^/]+)",
"dest": "/product?id=$id"
}]
...
// 将所有 url 为 /product/123 结尾的 route 到 /product?id=123

TODO

服务端生成文件的解决方案

暂时不允许在服务端生成文件, 尝试 express get 监听时生成一个文件报错了

1
2019-08-16T06:37:31.656Z    1cb09bbd-9883-443a-bd89-f4b212f7dcf0    { Error: EROFS: read-only file system, open '1.txt' errno: -30, code: 'EROFS', syscall: 'open', path: '1.txt' }