javascript - 即使回调已完成,Gulp [4.0.2] 在异步函数完成时也会挂起

标签 javascript node.js gulp

我有一个 gulp 任务在完成后挂起。

在我的命令上运行 --verbose 告诉我它已完成运行,但它不会退出进程

// ./gulpfile.js/precon/index.js

const { preconMoveFile, preconExcelToMysql } = require('../../src/lib/preCon')

module.exports = async done => {
  try {
    await preconMoveFile()
    await preconExcelToMysql()
    done()
    // return <-- doesnt work either per comment
  } catch (e) {
    throw e
  }
}

下面是命令行输出,请原谅我的调试日志输出

C:\Users\ALilland\Documents\macros\experiments\forecast-scraper>set NODE_ENV=development& gulp precon --verbose
[12:33:57] Using gulpfile ~\Documents\macros\experiments\forecast-scraper\gulpfile.js
[12:33:57] Starting 'precon'...
[2019-07-30T19:33:57.264Z] DEBUG - [preCon.preconMoveFile] existing ./src/tmp/precon.xlsx removed
[2019-07-30T19:33:57.333Z] DEBUG - [preCon.preconMoveFile] copied new file to ./src/tmp/precon.xlsx
[2019-07-30T19:33:58.965Z]  INFO - [initialize.db.caePreconForecast] created caePreconForecast
[2019-07-30T19:33:59.012Z] DEBUG - [preCon.preconExcelToMysql] added rows to db
[12:34:00] Finished 'precon' after 3.24 s

我尝试了 docs 中显示的几个选项没有成功,还尝试了几个选项 here没有成功

我也尝试过调用process.exit(0),但这会产生你忘记发出异步完成信号吗?警告文档提到

编辑:

我还应该注意我的根 index.js 文件,它需要 precon 任务

// ./gulpfile.js/index.js

exports.default = require('./default')
exports.precon = require('./precon')

最佳答案

挂起不是由 gulp 导致的,有一个后台进程仍在运行,阻止 gulp 关闭

罪魁祸首是一个开放的 mysql 池连接

const mysql = require('mysql')
const params = require('../config/mysql')

const db = mysql.createPool(params)

db.end() // <-- running this after each task resolves the issue

关于javascript - 即使回调已完成,Gulp [4.0.2] 在异步函数完成时也会挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57279013/

相关文章:

javascript - 如何在 D3 javascript 中从 CSV 中加载的列进行子集化

javascript - 如何从对象中删除未定义的属性?

javascript - 如何在nodejs中的单独线程上执行dos命令?

node.js - 从 Firebase Cloud Function 连接到 Stripe 时出错

javascript - 图片内的文字没有响应

javascript - 如何在一页wordpress中禁用所有脚本和样式表

node.js - 由于 @nestjs/config 中的 ts 错误,嵌套构建失败

gulp - `gulp.src` 与 `vinyl-source-stream` ?

javascript - Gulp 未编译但出现错误 ReferenceError : runSequence is not defined

javascript - 任务 'sassToCss, jadeToHtml' 不在你的 gulpfile 中