serverless framework在中国被错误安装为tencent专版的问题分析

582 阅读1分钟

对我们国内的用户而言cn.serverless.comserverless.com表面上看一个是serverless框架的中文本地化官网一个是全球官网,实际上并不是!。cn.serverless.com是腾讯云和serverless合作推出的,用于编排腾讯云函数的框架,它专门服务中国地区使用腾讯云函数的客户。如果你不是腾讯云的客户但是在中国,那么安装serverless时很容易被强制安装上腾讯云专版的serverless框架,并在创建项目时会遇到一些异常;这些异常基本都是由于serverless默认按照浏览器IP地址或者操作系统语言等特征来判断用户是否是中国内地用户导致的。

开发人员身份识别失败导致典型的错误样例

如果我在中国进行serverless安装,一般默认安装腾讯云版本(但是好像serverless现在又不支持腾讯云了)

当我们安装好后,输入serverless创建项目的时候,会出现下面的提示

thinktik@thinkdesk:~/Desktop$ serverless
Serverless Framework CLI no longer supports Serverless Tencent CLI

To run Serverless Framework without issues in China region, ensure: SLS_GEO_LOCATION=no-cn environment variable

我们编辑~/.bashrc,填入export SERVERLESS_PLATFORM_VENDOR=aws环境变量后,继续运行serverless会继续出现异常

thinktik@thinkdesk:~/Desktop$ vim ~/.bashrc 
thinktik@thinkdesk:~/Desktop$ source ~/.bashrc 
thinktik@thinkdesk:~/Desktop$ serverless
Serverless Components CLI is no longer bundled with Serverless Framework CLI

To run it, ensure it's installed:
npm install -g @serverless/components

Then run:
components <command> <options>

我们必须再次编辑~/.bashrc,填入export SLS_GEO_LOCATION=no-cn,并source ~/.bashrc生效环境变量才行

总结: SLS_GEO_LOCATION=no-cnSERVERLESS_PLATFORM_VENDOR=aws最好是同时设置为系统环境变量,这时你在中国使用serverles就不会错误的判断为腾讯云或者出现异常了。

参考