5

我最近爱上了 Gruntjs,并且很高兴地抓住每一个机会让我的开发生活变得更加轻松。我目前使用它来编译我的 SASS 文件、运行手表,并使用 nodemon 在我处理应用程序时让我的节点服务器保持更新。

所以这就是我整个早上都在发疯的地方。我想在 Node 应用程序运行之前启动 MongoDB。在 Node 应用程序的设置中,我检查数据库中的任何值,如果它为空,则将一个包含信息的测试文件推送到表中。

我目前尝试使用grunt-concurrentgrunt-shell-spawn来运行必要的 mongo 和 node 命令。

grunt.initConfig({
  shell: {
    mongo: {
      command: 'mongo'
    },
    node: {
      command: 'node app.js'
    }
  },
  concurrent: {
    dev: {
      tasks: ['shell:mongo','shell:node'],
      options: { logConcurrentOutput: true }
    }
  }
});
grunt.loadNpmTasks('grunt-concurrent');
grunt.loadNpmTasks('grunt-shell-spawn');

有没有办法确保 mongo 命令在运行节点任务之前达到它的“阻塞”状态?我猜这可以通过在 setTimeout 函数上异步运行节点任务来完成,但我不想一直等待开发过程中的更改生效。目前,我一直在为数据库打开一个单独的 shell 选项卡,并且真的很想将它集成到 Grunt 中以将所有内容保存在一个地方。

我不确定它在大范围内的重要性,但任何使用 Node.js 和 MongoDB 的人都会发现它很有用。

谢谢

4

2 回答 2

0

在指定“options: { async: true }”时尝试使用带有 shell:mongo 的 grunt-nodemon

concurrent: {
        tasks: ['shell', 'nodemon'],
        options: {
            logConcurrentOutput: true
        }
    },
    shell: {
        mongo: {
            command: 'mongod',
            options: {
                async: true
            }
        }
    },
nodemon: {
        dev: {
            script: "server.js",
        }
    }

这对我有用。

于 2014-02-28T05:52:23.097 回答
-2

可以间隔检查一下mongodb的服务端口是否可以访问?\

于 2014-01-26T10:08:05.157 回答