Firebase Cloud Function部署报错:max-len与ENOENT问题求助
解决Firebase Cloud Functions部署错误
1. ESLint行长度超限错误(max-len)
错误提示:9:1 error This line has a length of 173. Maximum allowed is 80,原因是deviceTokens的字符串长度超过了ESLint默认行长度限制。
解决方法二选一:
- 拆分长字符串:将token拆分为多行拼接,符合行长度要求:
const deviceTokens = "exiZaKIsSvesZ9U8_vDkXP:" + "................-gVbwWRBJD8x8x53pc2wHrtiFYHknJs-4ixTazX_n3"; - 调整ESLint配置:在functions目录下的
.eslintrc.js中修改max-len规则,放宽行长度限制:module.exports = { // 其他配置项 rules: { "max-len": ["error", { code: 200 }] // 设为满足需求的长度值 } };
2. ENOENT执行错误
错误提示:Error: spawn npm --prefix "%RESOURCE_DIR%" run lint ENOENT,核心原因是Node.js版本不兼容或环境配置问题:
- 降级Node.js版本:Firebase Cloud Functions官方推荐使用Node.js 18或20版本(v21不在支持列表内),用nvm切换到兼容版本:
nvm install 18 nvm use 18 - 验证functions目录配置:确保functions文件夹下存在
package.json,且包含lint脚本:{ "scripts": { "lint": "eslint ." } } - 修正部署命令:Windows环境下
$RESOURCE_DIR语法不兼容,直接使用Firebase CLI默认部署命令即可自动处理预部署流程:firebase deploy --only functions
额外代码逻辑修正
onCreate触发器的参数应为文档快照(snapshot)而非change(change是onUpdate/onWrite的参数),修正后避免潜在运行错误:
export const onOrderCreate = functions.firestore .document("orders/{orderID}") .onCreate((snapshot) => { const deviceTokens = "exiZaKIsSvesZ9U8_vDkXP:" + "................-gVbwWRBJD8x8x53pc2wHrtiFYHknJs-4ixTazX_n3"; const after = snapshot.data(); const payload = { data: { title: "New Notification", body: after.title, }, token: deviceTokens, }; return admin .messaging() .send(payload) .catch((error) => { console.log("FCM Failed: ", error); }); });
内容的提问来源于stack exchange,提问作者Joab Eliot
相关产品推荐
相关产品推荐

