- Vercel Jekyll 部署 Troubleshooting
- ZEIT
- 部署
- 安装 Now
- 客户端部署
- CLI 部署
- 本地调试
- 部署例子
- node 部署
- node-server 部署
- Appllo GraphQL 部署
- Troubleshooting
- Routes 的使用
- 502: BAD_GATEWAY
Vercel Jekyll 部署 Troubleshooting
Github 部署 Jekyll 到 Vercel 出现错误
代码语言:javascript复制sh: sudo: command not found
Error: Command "sudo gem install bundler jekyll && jekyll build" exited with 127
修改一下 Build Command 即可:
代码语言:javascript复制gem install bundler jekyll && jekyll build
ZEIT
ZEIT 是一个部署平台, 可以部署很多东西, 主要目的是部署一些 Serverless 的项目
一天 1000 次 invokes 用于小项目完全足够
部署
安装 Now
代码语言:javascript复制cnpm install now --save-dev
客户端部署
部署整个文件夹, 然后就会 自动执行 npm start
CLI 部署
首先
代码语言:javascript复制now login
登陆,然后在项目根目录执行:
代码语言:javascript复制now
就可以开始部署了
本地调试
代码语言:javascript复制now dev
如果遇到 yarn 无法找到的错误就可以
代码语言:javascript复制npm i -g yarn
执行过程中会在本地安装模块到 node_modules
部署例子
node 部署
注意 node server 和纯 node 的部署不一样
代码语言:javascript复制{
"version": 2,
"builds": [{ "src": "src/index.js", "use": "@now/node" }],
"routes": [{ "src": "/.*", "dest": "src/index.js" }]
}
node-server 部署
这个是简单 node server 的部署
一定要配置 package.json
里面 scripts
的 start
, 这个是作为部署后的入口
根目录添加一个文件 now.json
:
{
"version": 2,
"builds": [
{ "src": "index.js", "use": "@now/node-server" }
]
}
- src: 对应的入口文件
- use: 对应部署模式, 这里的模式就是简单 node server
Appllo GraphQL 部署
代码语言:javascript复制{
"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 访问到了
Troubleshooting
Routes 的使用
很简单很简单, 看看就懂了, 如果 deployment 之后访问路由出现 FNF 的错误就可能是这部分的问题
代码语言:javascript复制……
"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
502: BAD_GATEWAY
Code: NO_STATUS_CODE_FROM_FUNCTION
这个一般是因为后台没有返回任何数据。很有可能你是进了一个返回 error 的 route 然后 error 被 throw 然后没有返回。