设置变量
环境变量属于单个应用。它们在重启和 commit 后依然保留,但新的上传会创建一个不带这些变量的新应用,因此需要在新应用上重新设置。- 控制面板
- CLI
- VS Code
- API
- 在控制面板中打开你的应用,进入 Settings → Environment Variables。
- 添加每个键和值,或导入一个现有的
.env文件。 - 点击 Save。控制面板会询问是否重启应用:请重启,让应用读取新的值。
在代码中读取
Square Cloud 为你设置的变量
你的应用启动时已经定义了以下变量:
由于
NODE_ENV 为 production,npm install 会跳过 devDependencies。如果你的 START 命令需要构建项目(例如使用 typescript 或 vite),请把这些构建工具列在 package.json 的 dependencies 下。
变量如何传递到应用
Square Cloud 把变量保存在应用内的.squarecloud/.env 文件中,并在每次应用启动时用 shell 加载它们,时间点在安装依赖、运行 START 命令或 MAIN 文件之前。这带来两个结果:
- 名称应使用字母、数字和下划线,且不能以数字开头。
- 值如果包含空格或
$、&、;、|等 shell 字符,必须加引号,否则 shell 会截断或展开它们。控制面板和squarecloud app env set会自动加引号。在 VS Code 扩展或 API 中,请自己用单引号包裹这类值:输入'p@ss word$1',或在 API 请求体中发送"PASSWORD": "'p@ss word$1'"。
STATIC_APP_ENV_NOT_SUPPORTED。
让密钥远离你的上传
如果你的代码自己加载.env 文件(例如使用 dotenv),这个文件就必须包含在上传中。此时如果在 squarecloud.ignore 中列出 .env,应用启动时就拿不到密钥,机器人会因令牌无效而失败。
更安全的做法:按上面的方法,把 .env 中的每个值都移到应用的环境变量中。设置好之后,就可以把 .env 排除在上传和 Git 仓库之外。dotenv 不会覆盖已经存在的变量,因此同一份代码在你的电脑和 Square Cloud 上都能正常运行。
后续步骤
配置文件
设置
squarecloud.app 的 MAIN、MEMORY、START 等字段。托管 Discord 机器人
部署一个从环境变量读取令牌的机器人。
Discord 机器人错误
解决令牌无效、缺少 intents 以及机器人掉线等问题。
数据库连接错误
使用
DATABASE_URL 和正确的 SSL 设置进行连接。
