无法部署云功能

时间:2018-07-20 16:14:38

标签: node.js firebase push-notification firebase-cloud-messaging

在出现错误后部署功能时,我尝试了所有尝试,但无法解决问题 我正在编写用于推送通知的功能,我认为我正确编写了代码,但是不确定其正确与否

这是我在CMD上收到的错误

blue

这是LOG文件

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! functions@ lint: `eslint .`
npm ERR! Exit status 1
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 ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\000\AppData\Roaming\npm-cache\_logs\2018-07- 
20T15_42_18_516Z-debug.log

Error: functions predeploy error: Command terminated with non-zero exit 
code1

这是我在index.js中想要的代码

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm- 
cli.js',
1 verbose cli   '%RESOURCE_DIR%',
1 verbose cli   'run',
1 verbose cli   'lint' ]
2 info using npm@6.1.0
3 info using node@v10.4.1
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                        
9 verbose lifecycle functions@~lint: CWD: C:\Users\000\fb- 
functions\%RESOURCE_DIR%
10 silly lifecycle functions@~lint: Args: [ '/d /s /c', 'eslint .' ]
11 silly lifecycle functions@~lint: Returned: code: 1  signal: null
12 info lifecycle functions@~lint: Failed to exec lint script
13 verbose stack Error: functions@ lint: `eslint .`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:\Program 
Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:304:16)
13 verbose stack     at EventEmitter.emit (events.js:182:13)
13 verbose stack     at ChildProcess.<anonymous> (C:\Program 
Files\nodejs\node_modules\npm\node_modules\npm- 
lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:182:13)
13 verbose stack     at maybeClose (internal/child_process.js:961:16)
13 verbose stack     at Process.ChildProcess._handle.onexit 
(internal/child_process.js:248:5)
14 verbose pkgid functions@
15 verbose cwd C:\Users\000\fb-functions
16 verbose Windows_NT 10.0.10586
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program 
Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "--prefix" 
"%RESOURCE_DIR%" "run" "lint"
18 verbose node v10.4.1
19 verbose npm  v6.1.0
20 error code ELIFECYCLE
21 error errno 1
22 error functions@ lint: `eslint .`
22 error Exit status 1
23 error Failed at the functions@ lint script.
23 error This is probably not a problem with npm. There is likely 
additional logging output above.
24 verbose exit [ 1, true ]

1 个答案:

答案 0 :(得分:1)

您使用的是什么版本的Cloud Functions?如果您使用的是1.0或更高版本,则代码中有几件事需要解决。首先,guide指示实时数据库.onWrite触发器传递两个参数:change和context。另外,路径中不应包含“ $”。同样,parameters对象似乎涵盖了所有代码的后半部分。在有效负载中,它显示为“ notifications;”,但是我不确定这应该是什么。似乎它应该与guide中显示的有效负载匹配。可能还有其他我没有发现的错误。如果是我,我可能会尝试获得一个更简单的功能来成功部署,然后将其逐段添加。

exports.sendNotification = functions.database.ref('/Notifications/{receiver_id}/{notification_id}')
    .onWrite((change, context) => {
        const receiver_id = context.params.receiver_id;
        const notification_id = context.params.notification_id;
        console.log('We have a Notifications to send to :', receiver_id);
        if (!change.after.val()) {
            return console.log('A Notifications has been deleted from the database', notification_id);
        }
        const deviceToken = admin.database().ref(`/Users/${receiver_id}/device_token`)
            .once('value');
        return deviceToken.then(response => {
            const token_id = result.val();
            const payload = {
                notification: {
                    title: 'Friend Request',
                    body: 'You have a New Friend',
                    icon: 'default'
                }
            };
            return admin.messaging().sendToDevice(token_id, payload)
                .then(response => {
                    console.log('This was the notification feature.');
                });
            });

});