尝试订阅时出现意外的令牌

时间:2018-04-09 09:27:27

标签: javascript meteor

我试图在this video的帮助下理解Meteor.publish()Meteor.subscribe()

我有一个像这样定义的集合:

export const Chansons = new Mongo.Collection('chansons');

我在服务器上发布的内容:

Meteor.publish("chansons", function(){
  return Chansons.find();
});

但是当我尝试在我的客户端订阅它时,我有一个错误:

  

为web.browser构建时:

  imports/ui/body.js:17:14: Unexpected token, expected ";" (17:14)

我没有得到的是我完全像在视频中编写的代码,它最初起作用了!

constructor() {
  super();

  this.state = {
    subscription: {
      chansons: Meteor.subscribe("chansons")
    }
  }
}

然后我在其他地方更改了我的代码的格式,现在出现了这个错误,我似乎无法修复它。

错误似乎来自constructor(),因为当我删除这段代码时它就会消失。

我知道这个问题真的很愚蠢,但我不知道如何解决这个问题。

编辑:这是整个body.js



//Importation des méthodes
import { Template } from 'meteor/templating';
import { Meteor } from 'meteor/meteor';
import { Chansons } from '../api/chansons.js'

//Importation de body
import './body.html';
//Importation des templates
import './templates/header.html';
import './templates/youTube.html';
import './templates/search.html';
import './templates/parametres.html';
import './templates/affichagePlaylist.html';


//Subscription à la collection de chansons
constructor() {
  super();

  this.state = {
    subscription: {
      chansons: Meteor.subscribe("chansons")
    }
  }
}

//Lancement de YouTube

if (Meteor.isClient) {

  onYouTubeIframeAPIReady = function() {
    player = new YT.Player("player", {
      //height: "400",
      //width: "600",
      videoId: "fkk1vg0nAfc",
      events: {
        onReady: function (event) {
          event.target.playVideo();
        }
      }
    });
  };
  YT.load();
};

Template.body.helpers({
  chansons(){
    return Chansons.find({})
  }
});

Template.search.events({
  'click #Ajouter' : function(){
    const vidURL = document.getElementById("URL").value;

    Chansons.insert({
      URL : vidURL
    });
    const URLs = Chansons.find({},{ fields: { URL: 1, _id: 0 } }).map((chanson) => chanson.URL);
    console.log(URLs);
  }
});




1 个答案:

答案 0 :(得分:2)

您在constructor() {}声明之外使用class的声明语法无效。

只能在ES6中的对象(或类)范围内使用短语法版本声明函数。它们被称为“方法”(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions

使用Meteor的Blaze前端,你可能想在创建模板实例时订阅,即:

Template.body.onCreated(function () {
  this.subscribe("chansons"); // Similar to Meteor.subscribe, but scoped to the template instance.
});