【问题标题】:How to run adonis command in ace command file如何在 ace 命令文件中运行 adonis 命令
【发布时间】:2020-01-18 06:36:53
【问题描述】:

const { Command } = require('@adonisjs/ace')
const util = require('util')
const execSync = util.promisify(require('child_process').execSync)

const defaultSeedOrder = []

class SeedSync extends Command {
  static get signature () {
    return `seed:sync
    {
      order? : Comma separated of seeds
    }`
  }

  static get description () {
    return 'Seeds based on a list instead of running all seeds async.'
  }

  handle (args, options) {
    let seedOrder;

    if (args.order !== null) {
      seedOrder = args.order.split(/=(.+)/)[1].split(',')
    } else {
      seedOrder = defaultSeedOrder
    }

    for (const seed of seedOrder) {
      console.log(seed)
      execSync(`adonis seed --files='${seed}'`, (e, stdout, stderr) => {
        if (!stdout.includes('Seeded database in')) {
          this.error(`${this.icon('error')} Error: `)
        }

        console.log(stdout)
      })
    }
  }
}

module.exports = SeedSync

我想要一个 ace 命令顺序运行种子,我从这里复制了这段代码:Link to the original code

但这对我来说似乎根本不起作用。

任何帮助将不胜感激,谢谢

【问题讨论】:

标签: node.js backend adonis.js


【解决方案1】:

问题在于这两个块。

此签名需要像这样才能正常工作并正确获取订单变量:

static get signature () {
    return `
    seed:sync
    { --order=@value: Run only selected files }
    `
  }

const exec = execSync(`adonis seed --files='${seed}' --force`, {stdio: 'inherit'})

删除--files='${seed}' 上的逗号,使其变为--files=${seed}

因为在终端上,我们使用adonis seed:sync --order=''调用命令(这个单逗号传递给adonis Seed.js并导致错误“Nothing to Seed”)

【讨论】:

  • 添加必要的标签和标题
猜你喜欢
  • 2015-08-13
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 2022-01-13
  • 1970-01-01
  • 2018-07-18
  • 2015-04-18
相关资源
最近更新 更多