一个 FaaS 函数本身应该是无状态的,并拥有根据运行环境设置自身的能力。

指定运行环境

可以通过 MIDWAY_SERVER_ENV 或者 NODE_ENV 环境变量指定运行环境更加方便,比如在本地环境启动:

  1. NODE_ENV=local npm start
  2. NODE_ENV=local f invoke
  3. MIDWAY_SERVER_ENV=local npm start
  4. MIDWAY_SERVER_ENV=local f invoke

:::info 在一些情况下 NODE_ENV 被占用无法修改,所以可以用 MIDWAY_SERVER_ENV 替代。 :::

函数中获取环境

每个函数能拿到的 context 属性上,就有着环境字符串,环境取到的字符串即为 MIDWAY_SERVER_ENVNODE_ENV 的值。

  1. process.env.NODE_ENV = 'local';
  2. ctx.env // 'local'

示例

  1. @Provide()
  2. @Func('index.handler')
  3. export class IndexHandler implements FunctionHandler {
  4. @Inject()
  5. ctx: FaaSContext;
  6. async handler() {
  7. console.log(this.ctx.env); // local
  8. }
  9. }