Метеор не может найти модуль SyncedCron
Я выполнил команду:
метеор добавить перколят:synced-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 Meteor 1.4.2.3 Может кто-нибудь помочь, пожалуйста?
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.
Амит.
Извините за поздний ответ.
я вставил ваш код в мои 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 {}
}
}
Действительно ли syched-cron необходим для импорта на ваш server.js? вы можете показать свой сервер /main.ts?
Вот код
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);
}
});
});