本文介绍使用Serverless Devs工具过程中可能遇到的问题,并提供对应的解决方案。
如何配置s.yaml文件?
关于YAML规范的详细信息,请参见YAML规范。
使用Serverless Devs偶然出现异常,但未提示错误信息怎么办?
您可以按照以下步骤排查问题。
执行命令
npm install @serverless-devs/s -g
升级工具。执行命令
s clean --all
删除冗余文件。执行命令
rm -rf .s
移除同级目录下的.s
文件。执行
s -v
查看工具版本。如果执行命令后无任何响应,可能是本地Node.js环境异常,需要重新安装Node.js 12或更高版本。
如果问题还未解决,请加入钉钉用户群(钉钉群号11721331),并提供日志文件{s-home}/logs/{TraceId}.log和s.yaml文件,联系函数计算开发工程师帮您解决。
关于{s-home}和{TraceId}的获取方式,请参见下图。
部署代码时,希望以本地配置为准如何处理?
您可以在执行命令s deploy
时,选择use-local
或执行命令时指定参数,即s deploy -y --use-local
。
Serverless Devs工具支持多Region部署吗?
支持。具体操作,请参见Serverless Devs工具多Region部署。
如何本地调试函数?
如果您的Runtime不是Custom Runtime,而是函数计算内置语言,例如Node.js、Python等,推荐使用Serverless Devs工具的本地调用方式进行调试。具体操作,请参见Local命令。
如果您的Runtime是Custom Runtime,可以按照正常的开发习惯发起一个Server代码调试流程。
说明针对Custom Runtime,
s local invoke
命令能正常发起函数本地执行,但不支持断点调试。
怎样使用.fcignore文件?
部署较大的代码包时,将项目中的依赖上传到NAS文件系统后,可以通过.fcignore忽略上传到NAS的文件,然后将项目部署到线上。更多信息,请参见fcignore使用方法。
s.yaml文件中定义了多个函数时如何指定部署和调用某个函数?
s.yaml文件中,可能存在一个服务对应多个函数的情况,如果只想部署或调用其中某一个函数,可以在执行命令s deploy
、s local start
或s local invoke
时,指定函数名称。例如,下图s.yaml文件示例中,执行s helloworld deploy
只部署helloworld
函数。
执行s local
或者s build
命令时出现“connect ENOENT /var/run/docker.sock”错误,如何处理?
报错信息
报错信息类似如下内容:
Project xxx failed to execute:
ERROR:
connect ENOENT /var/run/docker.sock
解决方案
如果本地执行Docker命令是正常的,但是通过Serverless Devs执行s local
或者s build
命令异常,可以通过以下步骤解决该问题。
查看
/var/run/docker.sock
文件是否存在。运行以下命令查看文件是否存在。如果存在该文件,则跳过以下步骤。如果不存在该文件,则执行以下步骤。
ll /var/run/docker.sock
设置软链到
/var/run
目录。ll ~/.docker/run/docker.sock ln -s ~/.docker/run/docker.sock /var/run/docker.sock
查看Docker客户端是否启动。
通过Serverless Devs执行
s local
或者s build
命令,需要先启动Docker客户端,请确保已启动Docker客户端。
在应用中心或者Serverless Devs工具中如何使用Node.js 18?
在函数计算的Web场景下,用户大多使用的运行时为自定义运行时,但是自定义运行时的内置Node、Python、PHP的版本可能无法满足用户的需求。例如,您需要使用Node.js 18的版本,使用方法如下:
建议您在控制台先创建一个自定义运行时函数,运行环境选择Node.js 18,然后在函数详情页面中导出函数的配置。YAML中的layers用来挂载Node.js 18公共层,PATH变量可以将Node.js 18设置为默认版本。
service:
internetAccess: true
name: test-service
function:
handler: index.handler
timeout: 60
diskSize: 512
caPort: 3000
layers:
- acs:fc:cn-hangzhou:official:layers/Nodejs18/versions/1
customRuntimeConfig:
command:
- node
- server.js
runtime: custom.debian10
environmentVariables:
PATH: /opt/nodejs18/bin:/usr/local/bin/...
NODE_PATH: /opt/nodejs/node_modules
...
如果您在使用应用中心的功能,由于目前构建的过程中无法使层的配置生效。您需要通过export PATH的方式使构建过程中使用Node.js 18来进行npm install
和npm run build
。具体请参见升级流水线构建环境运行时。
通过Serverless Devs工具部署的应用怎么无法访问了?域名被删除了?
****.devsapp.net
域名是CNCF Sandbox项目Serverless Devs社区所提供,仅供学习和测试使用,不可用于任何生产使用。社区会对该域名进行不定期地拨测,并在域名下发30天后进行回收,建议您绑定自定义域名以获得更好的使用体验。