目前有很多Web应用基于Express框架来编写,这样的Web应用按照传统的部署方式将部署在云主机上,但您可能不想购买云主机,也不想在运维上投入太多成本,那么函数计算是一个不错的选择。本文介绍如何使用函数计算来搭建基于Express的Serverless Web应用。

背景信息

不管您的函数是通过HTTP还是API网关触发,您都可使用函数计算提供的模板,让Express快速地在函数计算上运行起来。原生请求的Headers或者Body都会透传给您的Express应用,您只需关注如何按照Express标准方式编写业务代码即可。此外,该模板还支持ES6代码编译成ES5,剪切打包压缩成一个.js文件。

如需迁移您的Express应用,请参见迁移Express到函数计算

操作步骤

  1. 安装Node.js。
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash         
    nvm install 8            
  2. 安装Funcraft工具。
    npm install @alicloud/fun -g            
    说明 Funcraft工具的某些子命令可能会用到Docker,所以您需要安装好Docker,详情请参见Funcraft安装教程
  3. 通过Funcraft模板生成项目。
    fun init -n demo https://github.com/muxiangqiu/fc-Express-nodejs8.git            
    说明 项目生成好后,在根目录下有个README.md文件,阅读该文件可以帮您快速了解项目骨架为您做了什么,以及相关的命令。详情请参见README.md
  4. 切换到项目根目录。
    cd demo           
    说明 步骤5及以后的所有命令,都在项目根目录下执行。
  5. 安装依赖。
    npm install            
    注意 有少数特殊npm模块的安装可能会依赖当前系统环境,为了能正确安装函数运行时的系统环境的npm模块,可以通过fun install命令来实现,例如Puppeteer。详情请参见为函数安装第三方依赖
  6. 编译。
    • 生产编译
      npm run build         
    • 开发编译。这种编译方式不会进行代码混淆,并且生成source map信息,方便开发调试。
      npm run dev            
  7. 本地运行函数。
    fun local start            
  8. 可选:运行调试函数。

    运行调试之前,请先用npm run dev命令编译源码,然后以调试的方式运行函数,命令如下:

    fun local start -d 3000            

    调试过程如下所示:

    debug_function_gif
  9. 部署函数到云端。

    部署函数的时候需要用到AccessKey等信息,您可以通过fun config来配置,如果配置过请忽略,部署函数命令如下:

    fun deploy