logo

鱼肚的博客

Don't Repeat Yourself

Serverless跳过腾讯云的方法

自从腾讯云和Serverless Components达成战略合作之后,国内用Serverless命令行工具就到处都是腾讯云的身影了。

由于目前我的服务还是部署在AWS上的,所以这个事情对我来说多多少少地有些困扰,把系统语言换成英文也没好使,所以特意查了下Serverless中判断是腾讯云用户还是AWS用户的方法:

关键代码如下:

1/**
2 * Detect if the user is located in China by looking at their settings
3 */
4const isChinaUser = () => {
5  let result;
6  if (
7    process.env.SERVERLESS_PLATFORM_VENDOR === 'tencent' ||
8    process.env.SLS_GEO_LOCATION === 'cn'
9  ) {
10    result = true;
11  } else if (process.env.SERVERLESS_PLATFORM_VENDOR === 'aws') {
12    result = false;
13  } else {
14    result = new Intl.DateTimeFormat('en', { timeZoneName: 'long' })
15      .format()
16      .includes('China Standard Time');
17  }
18
19  return result;
20};

从代码中可以看出,由于我当前用的是中国时区,所以被判断成了中国用户,就自动转到腾讯云相关服务中了。

解决办法也很简单,在环境变量中加一个 SERVERLESS_PLATFORM_VENDOR,值为'aws'就好了。