迁移到版本 strapi-3.0.0 后,Strapi Cron 不起作用

Strapi Cron doesn't work after migrating to version strapi-3.0.0

cron一般在strapi-3.0.0-beta.20版本运行 但在迁移到版本 strapi-3.0.0

后它不起作用

Strapi-3.0.0-beta.20

./config/environments/{env}/server.json

{
    "host": "0.0.0.0",
    "port": 1337,
    "proxy": {
        "enabled": false
    },
    "cron": {
        "enabled": true
    },
    "admin": {
        "autoOpen": false
    }
}

Strapi-3.0.0

./config/server.js

module.exports = ({ env }) => ({
    host: '0.0.0.0',
    port: env.int('PORT', '1337'),
    production: env('NODE_ENV') === 'production' ? true : false,
    proxy: {
        enabled: false
    },
    cron: {
        enabled: true
    },
    admin: {
        autoOpen: false
    }
})

这是使用 server.js

的 strapi 代码

strapi/packages/strapi/lib/middlewares/cron/index.js


  if (strapi.config.get('server.cron.enabled', false) === true) {
      _.forEach(_.keys(strapi.config.get('functions.cron', {})), task => {
          cron.scheduleJob(task, strapi.config.functions.cron[task]);
  });

这是github issue中注册的内容。

描述错误 新配置加载器文档中的信息不正确

预期行为 关于 cron 设置的文档中可能存在误解。

这是启动cron的设置(3.0.0.beta.20) ./config/environments/{环境}/server.json

{
    "host": "0.0.0.0",
    "port": 1337,
    "cron": {
        "enabled": true
    }
}

关于如何迁移指南的文档是这样的。 Migrating

Server

Your server configuration can move from ./config/environments/{env}/server.json to 
./config/server.js like shown here.

Server 可用选项 -> cron

但是,要在 3.0.0 版本中启用 cron 必须在 middleware.js

./config/middleware.js

    timeout: 100,
    load: {
        before: ['responseTime', 'logger', 'cors', 'responses', 'gzip'],
        order: [
            "Define the middlewares' load order by putting their name in this array is the right order"
        ],
        after: ['parser', 'router']
    },
    settings: {
       ...
       cron: { enabled: true }
       ...
    }

代码片段 查看代码(strapi/middlewares/index.js)得知应该在中间件中设置

系统 - Node.js 版本:v12.14.0 - NPM 版本:6.13.6 - Strapi 版本:3.0.0 - 数据库:mongodb - 操作系统:window、linux