метеор не может найти модуль SyncedCron

Я выполнил команду:

метеор добавить перколат:синхронизированный-cron

после того, как я добавлю на свой сервер/main.ts

SyncedCron.add({
    name: 'Crunch some important numbers for the marketing department',
    schedule: function(parser) {
    // parser is a later.parse object
    return parser.text('every 0.5 minutes');
  },
job: function() {
    return 1;
  }
});
SyncedCron.start();

Когда я запускаю сервер, он говорит

Не удается найти имя «SyncedCron»

Я пытался импортировать "synced-cron" и тоже не работает. Моя метеорная версия Meteor 1.4.2.3 Кто-нибудь может помочь?


person Shi Cheng    schedule 16.01.2017    source источник
comment
он завернут в блок Meteor.startup()?   -  person zim    schedule 16.01.2017
comment
Вы используете угловой 2 метеор. это может быть ошибка машинописи   -  person Amit kumar    schedule 16.01.2017
comment
Вы импортировали пакет метеора?   -  person Pankaj Jatav    schedule 16.01.2017
comment
Привет. Зим. да, это внутри моего Meteor.startup()   -  person Shi Cheng    schedule 16.01.2017
comment
Привет. Панкай. Да, я импортировал его с помощью этой строки import {SyncedCron} from 'meteor/percolate:synced-cron';   -  person Shi Cheng    schedule 16.01.2017
comment
Здравствуй. Амит. да. Я использую угловой 2 метеора, я новичок в этом.   -  person Shi Cheng    schedule 16.01.2017
comment
@shiCheng сработало ли мое решение?   -  person Amit kumar    schedule 18.01.2017


Ответы (4)


Чтобы решить эту проблему, в первую очередь вам нужно импортировать эту строку

import {SyncedCron} from 'meteor/percolate:synced-cron';

после импорта этой строки вы столкнетесь с другой ошибкой Cannot find module 'meteor/percolate:synced-cron
Эта ошибка возникает из-за того, что у нас нет машинописного определения для пакета percolate:synced-cron в нашем файле typings.d.ts. Поэтому, чтобы удалить эту ошибку, вам нужно создать собственное определение машинописного текста для percolate:synced-cron. поэтому просто добавьте эту строку в свой файл typings.d.ts или в определение метеора в папке @typings.

declare module "meteor/percolate:synced-cron"{
  export module SyncedCron { 
    function add ({ name: string, schedule:(parser: any): any, job:(): any })
    function start(): any {}
  }
}

теперь вы не получите никаких ошибок, связанных с percolate: synced-cron.

person Amit kumar    schedule 16.01.2017

Амит.

Извините за поздний ответ.

я вставил ваш код в свой файл typings.d.ts, но я все еще получаю server/main.ts (13, 3): не могу найти имя «SyncedCron», ниже мой файл typings.d.ts.

/// <reference types="zone.js" />
/// <reference types="meteor-typings" />
/// <reference types="@types/underscore" />
/// <reference types="@types/node" />

declare module '*.html' {
  const template: string;
  export default template;
}

declare module '*.scss' {
  const style: string;
  export default style;
}

declare module '*.less' {
  const style: string;
  export default style;
}

declare module '*.css' {
  const style: string;
  export default style;
}

declare module '*.sass' {
  const style: string;
  export default style;
}

declare module 'meteor/tmeasday:publish-counts' {
  import { Mongo } from 'meteor/mongo';

  interface CountsObject {
    get(publicationName: string): number;
    publish(context: any, publicationName: string, cursor: Mongo.Cursor, options: any): number;
  }

  export const Counts: CountsObject;
}

declare module 'meteor/accounts-base' {
  module Accounts {
    function requestPhoneVerification(phoneNumber: string, callback?: Function): void;
    function verifyPhone(phoneNumber: string, code: string, callback?: Function): void;
  }
}

declare module "meteor/percolate:synced-cron"{
  export module SyncedCron { 
    function add ({ name: string, schedule:(parser: any): any, job:(): any })
    function start(): any {}
  }
}
person Shi Cheng    schedule 17.01.2017
comment
вы включили импорт {SyncedCron} из 'meteor/percolate:synced-cron'; в вашем файле main.ts ??. я использовал этот пакет в своем проекте, и он отлично работает для меня, не получая никаких ошибок, и вы получаете ошибку SyncedCron not percolate: syned-cron not found. поэтому проверьте, как вы импортировали SyncedCron. и если это возможно, добавьте plnkr вашего кода. - person Amit kumar; 17.01.2017
comment
и еще кое-что. ваш код SyncedCron должен быть внутри Meteor.startup() на стороне сервера - person Amit kumar; 17.01.2017

действительно ли syched-cron нужен для импорта на ваш server.js? можешь показать свой сервер/main.ts?

person Rahmat Aligos    schedule 16.01.2017
comment
Это должен быть комментарий к вопросу, а не ответ. - person Michel Floyd; 17.01.2017
comment
не могу комментировать, кроме моего поста, я новенький - person Rahmat Aligos; 17.01.2017

вот код

import { Meteor } from 'meteor/meteor';
import {SyncedCron} from 'meteor/percolate:synced-cron';

Meteor.startup(() => {
  SyncedCron.add({
    name: 'Crunch some important numbers for the marketing department',
    schedule: function(parser) {
      // parser is a later.parse object
      return parser.text('every 0.25 minutes');
    },
    job: function() {
      return console.log(1234);
    }
  });
});
person Shi Cheng    schedule 16.01.2017
comment
Извините за поздний ответ. похоже, вы сами решили часть этой проблемы. но если вы включите только импорт {SyncedCron} из 'meteor/percolate:synced-cron'; то вы столкнетесь с дополнительной ошибкой Не удается найти модуль 'meteor/percolate:synced-cron'. я добавил полное решение. ты можешь проверить. - person Amit kumar; 16.01.2017
comment
Это нужно добавить в исходный пост. Пожалуйста, отредактируйте исходный пост. - person soundslikeodd; 16.01.2017