首页 > 解决方案 > 嵌套计划 npm 不工作

问题描述

我正在使用nest.js 框架来开发基于节点的应用程序。我正在尝试使用https://www.npmjs.com/package/nest-schedule中提到的 nest-schedule 编写调度程序。

不知何故,当与@Cron 或@Schedule 一起使用时,代码不起作用。休息其他装饰器工作正常。使用与上面链接中提到的相同的代码库。任何人都可以帮助我设置它并使用 nodejs 中使用的确切 cron 模式

标签: node.jsnestjs

解决方案


对于当前版本的 Nest,您可以使用 nestjs/schedule。看看我是如何使用 nestjs/schedule 实现的。

第一:安装nestjs cli

npm i -g @nestjs/cli

第二:新建项目

nest new schedule-sample

第三:安装nestjs时间表

npm install --save @nestjs/schedule

4th:生成一个新的服务来放置你的服务。

nest generate service cron

安装包后,将其添加到 app.module 中,如下所示:

import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';

从“@nestjs/common”导入 { Logger };

@Module({
  imports: [
    ScheduleModule.forRoot()
  ],
})
export class AppModule {}

5th:你可以运行它如下所示(完整的说明在这里https://docs.nestjs.com/techniques/task-scheduling):

@Cron('*/5 * * * * *')
runEvery10Seconds() {
 console.log('Run it every 5 seconds');
}

这是完整的示例 (cron.service.ts)。

从“@nestjs/common”导入 { Logger };从'@nestjs/common'导入{可注射};从“@nestjs/schedule”导入 { Cron, Interval };

@Injectable()
export class CronService {

    private readonly logger = new Logger(CronService.name);

    @Cron('*/5 * * * * *')
    runEvery10Seconds() {
        this.logger.debug('Run it every 5 seconds');
    }


    @Cron('10 * * * * *')
    handleCron() {
        this.logger.debug('Called when the current second is 10');
    }

    @Interval(10000)
    handleInterval() {
        this.logger.debug('Called every 10 seconds');
    }
}

最后的想法:
安排作业的最复杂的方法是使用动态 cron 作业。为此,您可以使用 SchedulerRegistry API 从代码中的任何位置按名称获取对 CronJob 实例的引用。首先,使用标准构造函数注入注入 SchedulerRegistry:

constructor(private schedulerRegistry: SchedulerRegistry) {}

提示从 @nestjs/schedule 包中导入 SchedulerRegistry。然后在一个类中使用它,如下所示。假设使用以下声明创建了一个 cron 作业:

@Cron('* * 8 * * *', {
  name: 'notifications',
})
triggerNotifications() {}

使用以下命令访问此作业:

const job = this.schedulerRegistry.getCronJob('notifications');

job.stop();
console.log(job.lastDate());

我已经在以下版本(package.json)中对其进行了测试

"@nestjs/common": "^7.6.15",
"@nestjs/core": "^7.6.15",
"@nestjs/schedule": "^0.4.3",

推荐阅读