有人可以帮我吗?
这是我每次运行npm run group
assert.js:374 抛出错误 ^
AssertionError [ERR_ASSERTION]:必须指定任务功能 在Gulp.set [作为_setTask](/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/undertaker/lib/set-task.js:10:3) 在Gulp.task(/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/undertaker/lib/task.js:13:8) 在对象。 (/home/gaurav/Desktop/GSOC/CarbonFootprint/gulpfile.js:361:6) 在Module._compile(内部/模块/cjs/loader.js:955:30) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:991:10) 在Module.load(internal / modules / cjs / loader.js:811:32) 在Function.Module._load(internal / modules / cjs / loader.js:723:14) 在Module.require(内部/模块/cjs/loader.js:848:19) 在要求时(内部/模块/cjs/helpers.js:74:18) 在执行时(/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/gulp/node_modules/gulp-cli/lib/versioned/^4.0.0/index.js:36:18) 在Liftoff.handleArguments(/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/gulp/node_modules/gulp-cli/index.js:201:24) 在Liftoff.execute(/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/liftoff/index.js:201:12) 在module.exports(/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/flagged-respawn/index.js:51:3) 在升空。 (/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/liftoff/index.js:191:5) 在/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/liftoff/index.js:149:9 在/home/gaurav/Desktop/GSOC/CarbonFootprint/node_modules/v8flags/index.js:138:14 { generateMessage:否, 代码:“ ERR_ASSERTION”, 实际:错误, 预期:是的, 运算子:'==' } npm ERR!代码ELIFECYCLE npm ERR! errno 1 npm ERR! carbon-footprint@6.0.2组:
gulp group
npm ERR!退出状态1 npm ERR! npm ERR!在carbon-footprint@6.0.2组脚本上失败。 npm ERR! npm可能不是问题。上面可能还有其他日志记录输出。npm ERR!可以在以下位置找到此运行的完整日志: npm ERR! /home/gaurav/.npm/_logs/2020-01-15T19_29_53_228Z-debug.log
这是 gulpfile.js 。我知道错误在第368行(据我所知)
var gulp = require('gulp');
var Server = require('karma').Server;
var flatten = require('gulp-flatten');
var argv = require('yargs').argv;
var gulpif = require('gulp-if');
var gulpFilter = require('gulp-filter');
var deleteLines = require('gulp-delete-lines');
var stripDebug = require('gulp-strip-debug');
var uglify = require('gulp-uglify');
var shell = require('gulp-shell');
var del = require('delete-empty');
var runSequence = require('run-sequence');
var cheerio = require('gulp-cheerio');
var jeditor = require('gulp-json-editor');
var variables = require('./buildVariables.json');
var babel = require('gulp-babel');
var eslint = require('gulp-eslint');
var merged = require('merge-stream');
var lintFiles = [
'Source/**/*.js',
'!Source/**/*.min.js',
'!Source/Chrome/background/google-maps-api.js'
];
var gulpSequence = require('gulp-sequence');
var validatorFilter = gulpFilter('**/validatorServer.js', { restore: true });
var doMinify = argv.debugApp === undefined ? true : false;
var transpiledFiles = gulp
.src('Source/Core/**/*.js')
.pipe(babel())
.pipe(validatorFilter)
.pipe(
gulpif(
!doMinify,
deleteLines({
filters: [/Raven(.|\s)+?;/g]
})
)
)
.pipe(validatorFilter.restore);
var chromeBuildpath = 'Build/Chrome/';
var safariBuildpath = 'Build/Safari/CarbonFootprint.safariextension/';
var webExtensionBuildpath = 'Build/WebExtension-Firefox/';
process.env.mode = argv.debugApp === undefined ? 'production' : 'development';
gulp.task('prepareTest', function() {
var es6files = [
'Source/Core/core/storageManager.js',
'Source/Core/core/CarbonFootprintCommon.js',
'Source/Core/core/TrainsCarbonFootprintCore.js',
'Source/Core/core/helpers/flightDataHelper.js',
'Source/Core/core/FlightsFootprintCommon.js',
'Source/Core/core/FlightsCarbonFootprintCore.js',
'Source/Core/core/MapsCarbonFootprintCore.js',
'Source/Core/core/validator/basicValidator.js',
'Source/Core/core/validator/flightsValidator.js',
'Source/Core/core/validator/mapsValidator.js',
'Source/Core/core/validator/trainsValidator.js',
'Source/Core/core/inform.js',
'Spec/Mocks/SentryServerMock.js',
'Spec/Mocks/MockHelper.js',
'Spec/**/*Spec.js'
];
var jsonFiles = 'Source/Core/**/*.json';
return merged(
gulp
.src(es6files)
.pipe(babel())
.pipe(gulp.dest('Build/test')),
gulp.src(jsonFiles).pipe(gulp.dest('Build/test'))
);
});
gulp.task('karma', function(done) {
new Server(
{
configFile: __dirname + '/karma.conf.js',
singleRun: true
},
done
).start();
});
gulp.task('eslint', function() {
return gulp
.src(lintFiles)
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
});
gulp.task('localesChrome', function() {
return gulp
.src('Source/Locales/**/*.json')
.pipe(gulp.dest(chromeBuildpath + '_locales'));
});
gulp.task('coreChrome', function() {
var linkFilter = gulpFilter('**/knowMore.html', { restore: true });
var validatorFilter = gulpFilter('**/validatorServer.js', { restore: true });
return merged(
transpiledFiles
.pipe(gulpif(doMinify, uglify()))
.pipe(gulp.dest(chromeBuildpath)),
gulp
.src(['!Source/Core/**/*.js', 'Source/Core/**'])
.pipe(validatorFilter)
.pipe(
gulpif(
!doMinify,
deleteLines({
filters: [/Raven(.|\s)+?;/g]
})
)
)
.pipe(validatorFilter.restore)
.pipe(linkFilter)
.pipe(
cheerio(function($, file) {
$('#rating-link')
.attr('href', variables['chrome']['storeLink'])
.html(
`<i class="fas fa-external-link-alt" aria-hidden="true"></i> ${variables[
'chrome'
]['storeName']}`
);
$('#store-link-1')
.attr('href', variables['firefox']['storeLink'])
.html(
`<img src="${variables['firefox'][
'badge'
]}" class="img-responsive" />`
);
$('#store-link-2')
.attr('href', variables['safari']['storeLink'])
.html(
`<img src="${variables['safari'][
'badge'
]}" class="img-responsive" />`
);
})
)
.pipe(linkFilter.restore)
.pipe(gulp.dest(chromeBuildpath))
);
});
gulp.task('specificChrome', function() {
var jsFilter = gulpFilter('**/*.js', { restore: true });
var validatorFilter = gulpFilter('**/validatorServer.js', { restore: true });
return gulp
.src('Source/Chrome/**')
.pipe(jsFilter)
.pipe(gulpif(doMinify, stripDebug()))
.pipe(gulpif(doMinify, uglify()))
.pipe(jsFilter.restore)
.pipe(validatorFilter)
.pipe(
gulpif(
!doMinify,
deleteLines({
filters: [/Raven(.|\s)+;/g]
})
)
)
.pipe(validatorFilter.restore)
.pipe(gulp.dest(chromeBuildpath));
});
gulp.task('coreSafari', function() {
var linkFilter = gulpFilter('**/knowMore.html', { restore: true });
return merged(
transpiledFiles
.pipe(gulpif(doMinify, uglify()))
.pipe(gulp.dest(safariBuildpath)),
gulp
.src(['!Source/Core/**/*.js', 'Source/Core/**'])
.pipe(linkFilter)
.pipe(
cheerio(function($, file) {
/*
* TODO Safari is currently linked to https://safari-extensions.apple.com.
* Update variables.json with appropriate link once app is published
*/
$('#rating-link')
.attr('href', variables['safari']['storeLink'])
.html(
`<i class="fas fa-external-link-alt" aria-hidden="true"></i> ${variables[
'safari'
]['storeName']}`
);
$('#store-link-1')
.attr('href', variables['chrome']['storeLink'])
.html(
`<img src="${variables['chrome'][
'badge'
]}" class="img-responsive" />`
);
$('#store-link-2')
.attr('href', variables['firefox']['storeLink'])
.html(
`<img src="${variables['firefox'][
'badge'
]}" class="img-responsive" />`
);
})
)
.pipe(linkFilter.restore)
.pipe(gulp.dest(safariBuildpath))
);
});
gulp.task('chromeShared', function() {
var jsFilter = gulpFilter('**/*.js', { restore: true });
var validatorFilter = gulpFilter('**/validatorServer.js', { restore: true });
return gulp
.src('Source/Chrome/background/**')
.pipe(jsFilter)
.pipe(gulpif(doMinify, stripDebug()))
.pipe(gulpif(doMinify, uglify()))
.pipe(jsFilter.restore)
.pipe(validatorFilter)
.pipe(
gulpif(
!doMinify,
deleteLines({
filters: [/Raven(.|\s)+?;/g]
})
)
)
.pipe(validatorFilter.restore)
.pipe(gulp.dest(safariBuildpath + 'background/'));
});
gulp.task('specificSafari', function() {
var jsFilter = gulpFilter('**/*.js', { restore: true });
var validatorFilter = gulpFilter('**/validatorServer.js', { restore: true });
return gulp
.src('Source/Safari/**')
.pipe(jsFilter)
.pipe(gulpif(doMinify, stripDebug()))
.pipe(gulpif(doMinify, uglify()))
.pipe(jsFilter.restore)
.pipe(validatorFilter)
.pipe(
gulpif(
!doMinify,
deleteLines({
filters: [/Raven(.|\s)+?;/g]
})
)
)
.pipe(validatorFilter.restore)
.pipe(gulp.dest(safariBuildpath));
});
gulp.task('localesSafari', function() {
return gulp
.src('Source/Locales/**/*.json')
.pipe(gulp.dest(safariBuildpath + '_locales'));
});
// WebExtension Building
gulp.task('localesWebext', function() {
return gulp
.src('Source/Locales/**/*.json')
.pipe(gulp.dest(webExtensionBuildpath + '_locales'));
});
gulp.task('coreWebExt', function() {
var linkFilter = gulpFilter('**/knowMore.html', { restore: true });
return merged(
transpiledFiles
.pipe(gulpif(doMinify, uglify()))
.pipe(gulp.dest(webExtensionBuildpath)),
gulp
.src(['!Source/Core/**/*.js', 'Source/Core/**'])
.pipe(linkFilter)
.pipe(
cheerio(function($, file) {
$('#rating-link')
.attr('href', variables['firefox']['storeLink'])
.html(
`<i class="fas fa-external-link-alt" aria-hidden="true"></i> ${variables[
'firefox'
]['storeName']}`
);
$('#store-link-1')
.attr('href', variables['safari']['storeLink'])
.html(
`<img src="${variables['safari'][
'badge'
]}" class="img-responsive" />`
);
$('#store-link-2')
.attr('href', variables['chrome']['storeLink'])
.html(
`<img src="${variables['chrome'][
'badge'
]}" class="img-responsive" />`
);
})
)
.pipe(linkFilter.restore)
.pipe(gulp.dest(webExtensionBuildpath))
);
});
gulp.task('specificWebExt', function() {
var jsFilter = gulpFilter('**/*.js', { restore: true });
var manifestFilter = gulpFilter('**/manifest.json', { restore: true });
var validatorFilter = gulpFilter('**/validatorServer.js', { restore: true });
return gulp
.src('Source/Chrome/**')
.pipe(jsFilter)
.pipe(gulpif(doMinify, stripDebug()))
.pipe(gulpif(doMinify, uglify()))
.pipe(jsFilter.restore)
.pipe(validatorFilter)
.pipe(
gulpif(
!doMinify,
deleteLines({
filters: [/Raven(.|\s)+?;/g]
})
)
)
.pipe(validatorFilter.restore)
.pipe(manifestFilter)
.pipe(
jeditor({
applications: {
gecko: {
id: 'carbon-footprint@aossie.org',
strict_min_version: '53.0'
}
}
})
)
.pipe(manifestFilter.restore)
.pipe(gulp.dest(webExtensionBuildpath));
});
gulp.task('clearXAttr', shell.task(['xattr -rc ' + safariBuildpath]));
gulp.task('cleanChrome', function() {
return del.sync(chromeBuildpath);
});
gulp.task('cleanSafari', function() {
return del.sync(safariBuildpath);
});
gulp.task('cleanWebExt', function() {
return del.sync(webExtensionBuildpath);
});
gulp.task('groupChrome', [
'cleanChrome',
'localesChrome',
'coreChrome',
'specificChrome'
]);
gulp.task('copySafariFiles', [
'localesSafari',
'coreSafari',
'chromeShared',
'specificSafari'
]);
gulp.task('groupWebext', [
'cleanWebExt',
'localesWebext',
'coreWebExt',
'specificWebExt'
]);
gulp.task('groupSafari', function(done) {
runSequence('cleanSafari', 'copySafariFiles', 'clearXAttr', function() {
done();
});
});
gulp.task('group', [
'groupChrome',
'groupSafari',
'groupWebext'
]);
gulp.task('test', gulpSequence('prepareTest', 'eslint', 'karma'));
我是Npm和Javscript领域的初学者,所以请您解释一下其背后的所有错误和原因,对我会有很大帮助。
答案 0 :(得分:0)
首先不需要run-sequence
。
更改此:
gulp.task('group', [ // this is gulp3 syntax, you are using gulp4 presumably
'groupChrome',
'groupSafari',
'groupWebext'
]);
gulp.task('test', gulpSequence('prepareTest', 'eslint', 'karma'));
到
gulp.task('group', gulp.series( // here was your main problem
'groupChrome',
'groupSafari',
'groupWebext'
));
gulp.task('test', gulp.series('prepareTest', 'eslint', 'karma'));
所以gulp v3使用gulp.task('someTaskName', ['taskA', 'taskB', etc.])
gulp v4使用gulp.task('someTaskName', gulp.series('taskA', 'taskB', etc.))
搜索从v3到v4的gulp迁移指南,以了解更多信息。