首页 > 解决方案 > nodejs 如何等待 `require('module').runMain()` 完成运行?

问题描述

有两个文件,t1.js 和 t2.js,它们是使用命令行运行的。

$ node t2.js
f2
f1

# I want to output f1 f2, not f2 f1

我尝试使用async/await来解决问题,但我没有找到使用它的方法,并且runMain()无法接受任何参数。

文件内容

t1.js

const f1 = new Promise(async resolve => {
  setTimeout(() => resolve('f1'), 1000)
})
new Promise(async () => {
  console.log(await f1)
})

t2.js

new Promise(async () => {
  const t1Path = __dirname + '/t1.js'
  process.argv = [process.argv[0], t1Path]
  require('module').runMain()
  // await require('module').runMain() // This is invalid
  console.log('f2')
})

标签: javascriptnode.jsasync-await

解决方案


推荐阅读