11:1错误解析错误:意外的令牌}

时间:2018-10-01 18:49:37

标签: javascript node.js npm

the structure of firebase我不知道这里出了什么问题。我看过其他帖子,但没有得到答案。错误是:

11:1  error  Parsing error: Unexpected token }

✖ 1 problem (1 error, 0 warnings)

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\HP\AppData\Roaming\npm-cache\_logs\2018-10-01T18_46_12_434Z-debug.log

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

这是我的代码:

the index.js file is
use-strict'
const functions = require('firebase-functions');
const admin= require('firebase-admin');
admin.initializeApp(functions.config().firestore);
exports.sendNotification= functions.firestore.document('Users/{user_id}/Notifications/{notification_id}').onWrite(event=> {});

const user_id= event.params.user_id;
const notification_id= event.params.notification_id;

console.log("User ID: " + user_id +"| Notifications ID : " + notification_id);
});

3 个答案:

答案 0 :(得分:1)

尝试删除第11行上的孤立的});

我不确定您是否要在第5行上使用string templating,但如果确实如此,请确保在字符串中使用魔术引号(`),并在括号中使用($)这行:

exports.sendNotification= functions.firestore.document('Users/{user_id}/Notifications/{notification_id}').onWrite(event=> {});

它应该看起来像这样:

exports.sendNotification= functions.firestore.document(`Users/${user_id}/Notifications/${notification_id}`).onWrite(event=> {});

答案 1 :(得分:0)

我相信您缺少一个:

'在“使用严格”声明的开头

在代码末尾

•随机})。删除})

•使用${variable here}

进行字符串插值

尝试以下操作:

"use-strict"

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(functions.config().firestore);
exports.sendNotification = functions.firestore.document(`Users/${user_id}/Notifications/${notification_id}`).onWrite(event => {});

const user_id = event.params.user_id;
const notification_id = event.params.notification_id;

console.log("User ID: " + user_id + "| Notifications ID : " + notification_id);

答案 2 :(得分:0)

您提供的代码段有一些明显的语法错误,如其他答案所示(脚本末尾有一个额外的});,并且需要确保在脚本的两端都有引号use-strict语句。代码段顶部的the index.js file is行看起来像您在创建帖子时犯了一个错误,因此您应该将此行移出代码段,或者将其移到您的实际脚本中,将其删除或在其前面加上//以将其注释掉。

您正在使用哪个版本的NodeJS?如果您使用的是较旧版本的节点,则可能会使用与您的节点版本不兼容的箭头函数语法。

  • 对照ES6 compatibility chart here检查节点版本node -v
  • 如果您的节点版本指示它不支持箭头功能,请尝试将以下内容替换为:event=> {}function(event) {}

编辑:看来,您提供给onWrite的箭头函数与onWrite方法的latest NodeJS Firebase documentation中定义的参数不匹配。看起来arrow函数应该采用以下参数(change, context) => { /* method body */ }

exports.modifyUser = functions.firestore
  .document('users/{userID}')
  .onWrite((change, context) => {
    // Get an object with the current document value.
    // If the document does not exist, it has been deleted.
    const document = change.after.exists ? change.after.data() : null;

    // Get an object with the previous document value (update/delete)
    const oldDocument = change.before.data();

    // perform desired operations ...
  });

编辑2:,您看到user_id未定义的错误,因为您不应该将{user_id}的文字字符串文本传递给Firestore。那只是代表您需要提供的值的占位符。您应该提供一个有效的用户ID。例如,如果用户ID为joe,通知ID为1,则应这样传递值:functions.firestore.document('Users/joe/Notifications/1')Read the documentation here

在对console.log的调用中,您还引用了以下变量,这些变量似乎也未定义:console.log("User ID: " + user_id +"| Notifications ID : " + notification_id);。您是否在代码中的其他位置设置了这些?我看不到它们的设置位置。如果没有,则需要在引用它们之前将它们设置在某个位置。一旦设置了这些变量,则需要按以下方式更新对Firestore方法的调用(注意使用反引号``,而不是引号)。这称为字符串模板。这样的事情(显然使用user_idnotification_id的实际值):

var user_id = "joe";
var notification_id = 1;
functions.firestore.document(
    `Users/${user_id}/Notifications/${notification_id}`)