运行 gulp 任务时如何解决 "Using a domain property in MakeCallback is deprecated" 警告?
How to resolve "Using a domain property in MakeCallback is deprecated" warning when running gulp tasks?
我正在使用节点 gulp 到 运行 一些构建任务。直到几天前这一切都很好。现在(我假设在 upgrade/update 之后,不确定具体是哪个。我相信这是节点从 14.4 到 14.5 的更新)我不断收到此警告
[DEP0097] DeprecationWarning: Using a domain property in MakeCallback is deprecated. Use the async_context variant of MakeCallback or the AsyncResource class instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
我不知道如何将 --trace-deprecation
与 gulp 一起使用,所以我找不到触发它的原因。
我的实际 gulp 文件 长得多并且注释掉部分,将 pipeline
更改为 .pipe
,更新节点和依赖项,使用 async/await
,以及其他一些小的改变并没有让我更接近于缩小问题的范围。
因此我在下面设置了这个最小的工作示例:
- 运行宁默认gulp任务(
clean_fake
)不触发警告
gulp clean
和 gulp styles
都会导致显示警告
const gulp = require('gulp');
const del = require('del');
const sass = require('gulp-sass');
async function clean() {
const deletedPaths = await del([ './js/*.site.js', './style.css' ], { dryRun: true });
console.log('Deleted files and directories:\n', deletedPaths.join('\n'));
}
async function clean_fake() {
const deletedPaths = await test();
console.log('Deleted files and directories:\n', deletedPaths.join('\n'));
}
function test() {
console.log('dummy function');
return [ 'test' ];
}
function styles() {
return gulp.src('./src/sass/style.scss').pipe(sass()).pipe(gulp.dest('./'));
}
exports.clean = clean;
exports.styles = styles;
exports.default = clean_fake;
当前版本:
节点:v14.5.0
npm:6.14.6
删除:5.1.0
gulp: 4.0.2
gulp-sass: 4.1.0
PS: 有类似的 question,但没有解决我的问题。
更新:
我想出了如何通过 运行 使用 NODE_OPTIONS
:
来跟踪弃用
NODE_OPTIONS='--trace-deprecation' gulp
但是输出对我帮助不大
(node:146806) [DEP0097] DeprecationWarning: Using a domain property in MakeCallback is deprecated. Use the async_context variant of MakeCallback or the AsyncResource class instead.
at emitMakeCallbackDeprecation (domain.js:123:13)
at FSReqCallback.topLevelDomainCallback (domain.js:134:5)
at FSReqCallback.callbackTrampoline (internal/async_hooks.js:121:14)
这是 Node 14.5.0 中的 known issue,由 Gulp-dependency async-done
引起,它使用了已弃用的 domain
模块,显示此警告。
根据链接 Gulp 问题中的 post,在 Gulp 使用相关代码的上下文中,弃用错误不是故意的。
在 Node 14.6.0 中,不再为所有 Gulp tasks 任务显示此警告(如果您的代码以某种方式以不推荐的方式使用模块,您的自定义代码可能会触发警告)。
我正在使用节点 gulp 到 运行 一些构建任务。直到几天前这一切都很好。现在(我假设在 upgrade/update 之后,不确定具体是哪个。我相信这是节点从 14.4 到 14.5 的更新)我不断收到此警告
[DEP0097] DeprecationWarning: Using a domain property in MakeCallback is deprecated. Use the async_context variant of MakeCallback or the AsyncResource class instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
我不知道如何将 --trace-deprecation
与 gulp 一起使用,所以我找不到触发它的原因。
我的实际 gulp 文件 长得多并且注释掉部分,将 pipeline
更改为 .pipe
,更新节点和依赖项,使用 async/await
,以及其他一些小的改变并没有让我更接近于缩小问题的范围。
因此我在下面设置了这个最小的工作示例:
- 运行宁默认gulp任务(
clean_fake
)不触发警告 gulp clean
和gulp styles
都会导致显示警告
const gulp = require('gulp');
const del = require('del');
const sass = require('gulp-sass');
async function clean() {
const deletedPaths = await del([ './js/*.site.js', './style.css' ], { dryRun: true });
console.log('Deleted files and directories:\n', deletedPaths.join('\n'));
}
async function clean_fake() {
const deletedPaths = await test();
console.log('Deleted files and directories:\n', deletedPaths.join('\n'));
}
function test() {
console.log('dummy function');
return [ 'test' ];
}
function styles() {
return gulp.src('./src/sass/style.scss').pipe(sass()).pipe(gulp.dest('./'));
}
exports.clean = clean;
exports.styles = styles;
exports.default = clean_fake;
当前版本:
节点:v14.5.0
npm:6.14.6
删除:5.1.0
gulp: 4.0.2
gulp-sass: 4.1.0
PS: 有类似的 question,但没有解决我的问题。
更新:
我想出了如何通过 运行 使用 NODE_OPTIONS
:
NODE_OPTIONS='--trace-deprecation' gulp
但是输出对我帮助不大
(node:146806) [DEP0097] DeprecationWarning: Using a domain property in MakeCallback is deprecated. Use the async_context variant of MakeCallback or the AsyncResource class instead.
at emitMakeCallbackDeprecation (domain.js:123:13)
at FSReqCallback.topLevelDomainCallback (domain.js:134:5)
at FSReqCallback.callbackTrampoline (internal/async_hooks.js:121:14)
这是 Node 14.5.0 中的 known issue,由 Gulp-dependency async-done
引起,它使用了已弃用的 domain
模块,显示此警告。
根据链接 Gulp 问题中的 post,在 Gulp 使用相关代码的上下文中,弃用错误不是故意的。
在 Node 14.6.0 中,不再为所有 Gulp tasks 任务显示此警告(如果您的代码以某种方式以不推荐的方式使用模块,您的自定义代码可能会触发警告)。