全部產品
Search
文件中心

Function Compute:Serverless Devs工具使用FAQ

更新時間:Aug 20, 2025

本文介紹使用Serverless Devs工具過程中可能遇到的問題,並提供對應的解決方案。

如何配置s.yaml檔案?

關於YAML規範的詳細資料,請參見YAML規範

使用Serverless Devs偶然出現異常,但未提示錯誤資訊怎麼辦?

您可以按照以下步驟排查問題。

  1. 執行命令npm install @serverless-devs/s -g升級工具。

  2. 執行命令s clean --all刪除冗餘檔案。

  3. 執行命令rm -rf .s移除同級目錄下的.s檔案。

  4. 執行s -v查看工具版本。

    如果執行命令後無任何響應,可能是本地Node.js環境異常,需要重新安裝Node.js 12或更高版本。

如果問題還未解決,請加入DingTalk使用者群(DingTalk群號64970014484),並提供記錄檔{s-home}/logs/{TraceId}.logs.yaml檔案,聯絡Function Compute開發工程師幫您解決。

關於{s-home}{TraceId}的擷取方式,請參見下圖。checks-s-home

部署代碼時,希望以本地配置為準如何處理?

您可以在執行命令s deploy時,選擇use-local或執行命令時指定參數,即s deploy -y --use-local

Serverless Devs工具支援多Region部署嗎?

支援。具體操作,請參見Serverless Devs工具多Region部署

如何本地調試函數?

  • 如果您的Runtime不是Custom Runtime,而是Function Compute內建語言,例如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 deploys local starts local invoke時,指定函數名稱。例如,下圖s.yaml檔案樣本中,執行s helloworld deploy只部署helloworld函數。

muti-functions

執行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命令異常,可以通過以下步驟解決該問題。

  1. 查看/var/run/docker.sock檔案是否存在。

    1. 運行以下命令查看檔案是否存在。如果存在該檔案,則跳過以下步驟。如果不存在該檔案,則執行以下步驟。

      ll /var/run/docker.sock
    2. 設定軟鏈到/var/run目錄。

      ll ~/.docker/run/docker.sock
      ln -s ~/.docker/run/docker.sock  /var/run/docker.sock
  2. 查看Docker用戶端是否啟動。

    通過Serverless Devs執行s local或者s build命令,需要先啟動Docker用戶端,請確保已啟動Docker用戶端。

在應用中心或者Serverless Devs工具中如何使用Node.js 18?

在Function Compute的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 installnpm run build。具體請參見升級流水線構建環境運行時

通過Serverless Devs工具部署的應用怎麼無法訪問了?網域名稱被刪除了?

***.devsapp.net網域名稱是CNCF SandBox專案Serverless Devs社區所提供,僅供學習和測試使用,不可用於任何生產使用。社區會對該網域名稱進行不定期撥測,並在網域名稱下發1天后進行回收,建議您及時為應用綁定自訂網域名,以獲得更好的使用體驗。

如果應用未綁定自訂網域名,且部署的時間超過1天,應用將無法正常訪問,此時需要重新部署一次應用,應用網域名稱即可正常訪問。