我试过部署一个firebase函数,但由于ESLint的一些问题,它总是失败。我也试过在谷歌上搜索答案,但我看到的一切对我来说都是希腊语。
我也偶然发现了this和this的答案,但它们似乎不适用于我的场景。
我的职能
// // Create and Deploy Your First Cloud Functions
// // https://firebase.google.com/docs/functions/write-firebase-functions
//
// exports.helloWorld = functions.https.onRequest((request, response) => {
// response.send("Hello from Firebase!");
// });
//import firebase functions modules
const functions = require("firebase-functions");
//import admin module
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
// Listens for new messages added to messages/:pushId
exports.pushNotification = functions.database.ref("/Message").onWrite( event => {
// Grab the current value of what was written to the Realtime Database.
var valueObject = event.data.val();
// Log the event
console.log("Push notification event triggered for " + valueObject.title);
//if(valueObject.title != null) {
//valueObject.photoUrl= "Sent you a photo!";
// }
// Create a notification
const payload = {
data: {
body:valueObject.body,
imgUrl: valueObject.imgUrl,
postUrl: valueObject.postUrl,
title: valueObject.title
},
};
//Create an options object that contains the time to live for the notification and the priority
const options = {
priority: "high",
timeToLive: 60 * 60 * 24
};
return admin.messaging().sendToTopic("Posts", payload, options);
});
日志
0 info it worked if it ends with ok
1 verbose cli [ '/home/xoxo/.nvm/versions/node/v9.5.0/bin/node',
1 verbose cli '/home/xoxo/.nvm/versions/node/v9.5.0/bin/npm',
1 verbose cli '--prefix',
1 verbose cli '/home/xoxo/Android/Projects/FirebaseFunctions/functions',
1 verbose cli 'run',
1 verbose cli 'lint' ]
2 info using npm@5.6.0
3 info using node@v9.5.0
4 verbose run-script [ 'prelint', 'lint', 'postlint' ]
5 info lifecycle functions@~prelint: functions@
6 info lifecycle functions@~lint: functions@
7 verbose lifecycle functions@~lint: unsafe-perm in lifecycle true
8 verbose lifecycle functions@~lint: PATH: /home/xoxo/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/home/xoxo/Android/Projects/FirebaseFunctions/functions/node_modules/.bin:/home/xoxo/.nvm/versions/node/v9.5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin
9 verbose lifecycle functions@~lint: CWD: /home/xoxo/Android/Projects/FirebaseFunctions/functions
10 silly lifecycle functions@~lint: Args: [ '-c', 'eslint .' ]
11 info lifecycle functions@~lint: Failed to exec lint script
12 verbose stack Error: functions@ lint: `eslint .`
12 verbose stack spawn ENOENT
12 verbose stack at ChildProcess.<anonymous> (/home/xoxo/.nvm/versions/node/v9.5.0/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:48:18)
12 verbose stack at ChildProcess.emit (events.js:160:13)
12 verbose stack at maybeClose (internal/child_process.js:943:16)
12 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)
13 verbose pkgid functions@
14 verbose cwd /home/xoxo/Android/Projects/FirebaseFunctions
15 verbose Linux 4.13.0-32-generic
16 verbose argv "/home/xoxo/.nvm/versions/node/v9.5.0/bin/node" "/home/xoxo/.nvm/versions/node/v9.5.0/bin/npm" "--prefix" "/home/xoxo/Android/Projects/FirebaseFunctions/functions" "run" "lint"
17 verbose node v9.5.0
18 verbose npm v5.6.0
19 error file sh
20 error code ELIFECYCLE
21 error errno ENOENT
22 error syscall spawn
23 error functions@ lint: `eslint .`
23 error spawn ENOENT
24 error Failed at the functions@ lint script.
24 error This is probably not a problem with npm. There is likely additional logging output above.
25 verbose exit [ 1, true ]
控制台输出
xoxo@xo9:~/Android/Projects/FirebaseFunctions$ firebase deploy
=== Deploying to 'testproject-a1bda'...
i deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
> functions@ lint /home/xoxo/Android/Projects/FirebaseFunctions/functions
> eslint .
sh: 1: eslint: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! functions@ lint: `eslint .`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the functions@ lint script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR! /home/xoxo/.npm/_logs/2018-02-03T22_35_55_608Z-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code1
软件包. js
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "./node_modules/.bin/eslint .",
"serve": "firebase serve --only functions",
"shell": "firebase experimental:functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"dependencies": {
"firebase-admin": "~5.8.1",
"firebase-functions": "^0.8.1"
},
"devDependencies": {
"eslint": "^4.12.0",
"eslint-plugin-promise": "^3.6.0"
},
"private": true
}
拜托,我做错什么了?
8条答案
按热度按时间wfypjpf41#
我能想象到的项目进入这种状态的唯一方式是,如果你在项目创建时拒绝允许npm安装依赖项,那么当你问这个问题时:
?是否要立即安装与npm的依赖项?
您可能回答了“否”。这将阻止eslint软件包的安装,您将看到该错误。
否则,您可能删除了
node_modules
下的eslint安装包,您可以从functions
文件夹运行npm install
,在node_modules
下重新创建所需的所有内容。hgtggwj02#
简单修复。在您的package.json中更改
到
sh7euo9m3#
有同样的问题,我重新安装了npm
然后重新启动Firebase功能(您必须覆盖所有文件,并确保安装EsLine调试和安装所有依赖项)是,按Y可收到任何请求
再次部署后一切正常
qlckcl4x4#
如果您在部署firebase项目时发现-prefix“%REASOURCE_DIR%”运行初始化类型错误,则必须编辑firebase.json文件中的一些代码。
6l7fqoea5#
嘿你只需要从then语句返回一些东西
jm81lzqq6#
我也遇到了类似的错误,我发现我的firebase项目目录名为firebase/database,我删除了/,并将目录名改为firebase-database,希望这对大家有所帮助。
oiopk7p57#
我在Windows上使用ESLINT时遇到了类似的问题
我刚刚破坏了npm run deploy以便调用firebase deploy命令。这个调用允许我查看“firebase deploy”命令执行之外的错误,有趣的是看到Eslint与文件有CLRF冲突
然后我运行了npm run lint -- --fix,这些问题就解决了
:D
bq8i3lrv8#
到2023年,我仍然遇到这个问题。这个问题确实是由于人们在项目配置/启动时跳过了默认的npm安装。但是与其当场修复它,不如重新安装所有的依赖项对我来说似乎是大材小用。你缺少eslint,所以你必须将eslint添加到你的project.json文件中,然后安装依赖项,这样你就可以开始了。
我只需要做两件事:
1.将
eslint
作为依赖项添加到package.json中1.在您的
functions
文件夹中。运行命令:然后运行
firebase deploy
,就是它。如果上一个命令已成功完成,则不会出现任何错误。