MidwayJS我使用的部署方式有普通部署,另外也知道一些单文件部署,二进制文件部署的坑
具体部署方法,请参考https://midwayjs.org/docs/deployment 框架的相关文档
普通部署
如果服务器是linux服务器,并且是初次接触node项目部署,优先考虑使用pm2等技术进行部署node项目。因为直接运行node项目的话,想关闭或者重启项目会比较麻烦,使用pm2方便管理。
另外普通部署时,当代码上传到服务器中后,使用npm install --production
命令下载对应的包。不要使用npm install
,因为开发环境的部分包在生产环境不需要,比如ts编译等。上传到服务器中的应该是js代码,而不是ts。
单文件部署和二进制文件部署
单文件部署和二进制文件部署比较像,流程上实际单文件部署就把整个node项目打包成了一个js文件,在服务器中直接运行,而二进制文件是把整个项目打包成二进制文件,比单js文件在安全性上要好。
最需要注意的有2点:
- 注意Alias Path
也就是前端平时开发经常用"@"来省略部分路径
import { ServiceError } from '@/filter/error/service.error'
在MidwayJS项目中默认不支持这样方法, 官网上有代替方案,但是在单文件部署和二进制文件部署中,不能使用,会导致出错。需要使用import { ServiceError } from '../../../filter/error/service.error'
这样的写法
- 注意使用view目录用法。
我在使用MidwayJS的时候,使用了ejs模板,进行服务端渲染一些页面。 这种情况下使用单文件部署和二进制文件部署会出错,因为打包的时候不会打包view目录中的ejs文件,打包后在服务器中路径寻找错误。
所以需要使用模板的情况,可以考虑普通部署