2、环境搭建:Node.js 与 Python 运行时安装、Serverless Framework 配置、云函数 CLI 工具初始化

说实话,很多新手学云函数,上来就写代码,结果部署时各种报错。环境没搭好,后面全是坑。这一章,我带你一步步把地基打牢。

2.1 Node.js 运行时安装

云函数支持多种语言,但 Node.js 是最主流的。我个人习惯用 Node.js 16.x 或 18.x,这两个版本在各大云厂商那里兼容性最好。

安装步骤

  1. 下载安装包:去 Node.js 官网,下载 LTS 版本。别追新,稳定第一。
  2. 验证安装:打开终端,输入 node -vnpm -v。能看到版本号,就算成了。
  3. 配置镜像源:国内用户建议换淘宝源,不然下载依赖能急死人。
# 查看版本
node -v
npm -v

# 配置淘宝镜像(推荐)
npm config set registry https://registry.npmmirror.com
我的小技巧:装完 Node.js 后,顺手装个 nvm(Node Version Manager)。这样你可以随时切换 Node 版本,我在项目中遇到过不同云厂商对 Node 版本要求不一样的情况,用 nvm 一键切换,省心多了。

2.2 Python 运行时安装

Python 在数据处理、AI 相关的云函数里用得很多。我个人建议装 Python 3.8 或 3.9,这两个版本在云函数生态里支持最全。

安装要点

  • Windows 用户:安装时记得勾选「Add Python to PATH」。我见过太多人忘了这步,后面命令行找不到 python 命令。
  • Mac/Linux 用户:用包管理器装,比如 brew install python@3.9
  • 验证安装:终端输入 python --versionpython3 --version
# 验证 Python 版本
python --version

# 验证 pip(包管理工具)
pip --version

# 配置国内镜像(可选)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
注意:Mac 系统自带的 Python 是 2.7 版本,千万别用那个。我曾经踩过这个坑,调试了半天才发现是系统自带的旧版本。一定要装独立的 Python 3.x。

2.3 Serverless Framework 配置

Serverless Framework 是目前最流行的云函数部署工具。说白了,它帮你把代码打包、上传、配置触发器这些繁琐的事,一键搞定。

全局安装

# 使用 npm 全局安装
npm install -g serverless

# 验证安装
serverless --version

# 简写命令
sls --version

装完后,你会多出一个 sls 命令。我个人习惯用 sls,敲起来快多了。

配置云厂商凭证

Serverless Framework 需要知道你要部署到哪个云平台。以腾讯云为例:

# 配置腾讯云密钥
sls config --mode credentials --provider tencent --key 你的SecretId --secret 你的SecretKey

密钥从哪里来?去云厂商的控制台,找到「访问管理」-「API 密钥管理」,新建一个就行。嗯,这里要注意,密钥千万别泄露,别传到 GitHub 上。

核心概念:Serverless Framework 的配置文件叫 serverless.yml。你所有的函数定义、触发器配置、环境变量,都写在这个文件里。后面写代码时,我们会反复跟它打交道。

2.4 云函数 CLI 工具初始化

环境装好了,我们来初始化第一个云函数项目。这里我用腾讯云的 SCF(Serverless Cloud Function)CLI 工具做演示,其他云厂商的流程大同小异。

安装 SCF CLI

# 安装腾讯云 SCF 命令行工具
npm install -g @tencent-sdk/cli

# 验证安装
scf --version

初始化项目

# 创建一个新的云函数项目
scf init --name my-first-function --runtime Nodejs16.13

# 进入项目目录
cd my-first-function

执行完后,你会看到这样的目录结构:

my-first-function/
├── index.js          # 函数入口文件
├── serverless.yml    # 部署配置文件
└── .env              # 环境变量文件(可选)

打开 index.js,你会看到一段默认的 Hello World 代码:

'use strict';
exports.main_handler = async (event, context) => {
    console.log("Hello World");
    console.log(event);
    console.log(context);
    return "Hello from SCF";
};
避坑指南:我曾经在初始化时选错了运行时版本,结果部署上去的函数一直报错。所以初始化时,一定要确认 --runtime 参数跟你本地安装的版本一致。比如你本地装的是 Node.js 16.x,那就用 Nodejs16.13

本地调试

代码写完后,别急着部署。先在本地跑一下:

# 本地调用函数
scf invoke --function-name my-first-function

# 如果你修改了代码,想模拟事件触发
scf invoke --function-name my-first-function --event '{"key":"value"}'

看到输出结果了吗?嗯,这就说明你的环境搭好了,函数能正常跑起来。

2.5 环境验证清单

最后,我整理了一份检查清单。你照着过一遍,确保万无一失:

检查项 命令 预期结果
Node.js 版本 node -v v16.x 或 v18.x
npm 版本 npm -v 8.x 或 9.x
Python 版本 python --version Python 3.8+
Serverless Framework sls --version 3.x 或 4.x
SCF CLI scf --version 显示版本号
本地函数调用 scf invoke 返回 "Hello from SCF"

到这步,你的开发环境就彻底搭好了。下一章,我们开始写第一个真正的云函数——一个能处理 HTTP 请求的 API 接口。到时候你会发现,前面这些准备工作,花得值。