Npm安装在before()内部,不等待代码完成

时间:2019-05-27 19:41:49

标签: javascript node.js npm mocha es6-promise

我想运行我的程序,然后运行测试以查看一切是否正确完成。我正在npm start函数中运行before命令,但是它不起作用。

我已经像这样检查并尝试过Async function in mocha before() is alway finished before it() spec?

return new Promise((resolve) => {
   execa('npm start')
   process.chdir('../Project')
   console.log(process.cwd());
   resolve()
});

return new Promise((resolve, reject) => {
  execa('npm start')
    .then(function() {
      process.chdir('../Project')
      console.log(process.cwd());
      resolve()
    })
    .catch(function(err) {
      console.log('Error')
      return reject(new Error(err))
    })
});

但是console.lognpm start完成之前正在执行。

我也检查了 In mocha testing while calling asynchronous function how to avoid the timeout Error: timeout of 2000ms exceeded 现在我的package.json文件测试开始是这样的:"test": "mocha --timeout 30000"。这没有帮助。

我的代码:

npm start执行以下代码:

try {
  process.chdir('../')
  var packages = ['webpack']
  var args = ['install', '--save', '--save-exact']

  let exec = args.concat(packages, ['--verbose'])

  new Promise(function(resolve, reject) {
    execa('npm', exec)
    .then(function() {
      console.log(`Current directory: ${process.cwd()}`);
      console.log(`Execa instaled: `, exec);
      return execa('npm', ['install'])
    })
    .then(function() {
      console.log('Success. Installed packages in', dir);
      resolve()
    })
    .catch(function() {
      console.log('Error')
      return reject(new Error('npm installation failed'))
    })
  })
} catch (err) {
  console.error(`chdir: ${err}`);
}

在我尝试过的所有事情中,mocha是要么不等待脚本完成,要么脚本完成,然后mocha抛出Error: Timeout of 30000ms exceeded.

如何正确执行?我希望这是我对诺言的误解。

0 个答案:

没有答案