尝试用Gulp启动服务器时出错

尝试用Gulp启动服务器时出错,gulp,gulp-4,Gulp,Gulp 4,我正在尝试运行服务器,我得到了这个断言错误。我已经卸载了node和NPM,并再次重新安装。我在这里尝试了许多步骤和建议的解决方案,但它不适合我的问题 AssertionError [ERR_ASSERTION]: Task never defined: node_modules/scss/bootstrap.scss at getFunction (C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node_modules

我正在尝试运行服务器,我得到了这个断言错误。我已经卸载了node和NPM,并再次重新安装。我在这里尝试了许多步骤和建议的解决方案,但它不适合我的问题

AssertionError [ERR_ASSERTION]: Task never defined: node_modules/scss/bootstrap.scss
        at getFunction (C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node_modules\undertaker\lib\helpers\normalizeArgs.js:15:5)
        at map (C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node_modules\arr-map\index.js:20:14)
        at normalizeArgs (C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node_modules\undertaker\lib\helpers\normalizeArgs.js:22:10)
        at Gulp.series (C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node_modules\undertaker\lib\series.js:13:14)
        at C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\gulpfile.js:7:26
        at sass (C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node_modules\undertaker\lib\set-task.js:13:15)
        at bound (domain.js:422:14)
        at runBound (domain.js:435:12)
        at asyncRunner (C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node_modules\async-done\index.js:55:18)
        at processTicksAndRejections (internal/process/task_queues.js:75:11)
这是我的密码

var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var sass = require('gulp-sass');


gulp.task('sass', async function () {
    return gulp.src(gulp.series('node_modules/scss/bootstrap.scss', 'src/scss/*.scss'))
        .pipe(sass())
        .pipe(gulp.dest("src/css"))
        .pipe(browserSync.stream());
});


gulp.task('js', async function () {
    return gulp.src(gulp.series('node_modules/bootstrap/dist/js/bootstrap.min.js', 'node_modules/jquery/dist/jquery.min.js', 'node_modules/popper.js/dist/popper.min.js'))
        .pipe(gulp.dest('src/js'))
        .pipe(browserSync.stream());
});


gulp.task('serve', async function () {
    browserSync.init({
        server: "./src",
    });
    gulp.watch(['node_modules/bootstrap/scss/bootstrap.scss', 'src/scss/*.scss'], 'sass');
    gulp.watch("src/*.html").on('change', browserSync.reload);
})


gulp.task('default', gulp.series(gulp.parallel('sass', 'js', 'serve')));

错误来自
sass
js
任务。您正在用
gulp.series
包装您的源代码。所以Gulp试图将源代码作为任务运行

它们只需要像在watch任务中一样位于数组中

只要改变一下:

gulp.task('sass',异步函数(){
返回gulp.src(gulp.series('node_modules/scss/bootstrap.scss','src/scss/*.scss'))

致:

gulp.task('sass',异步函数(){
返回gulp.src(['node_modules/scss/bootstrap.scss','src/scss/*.scss'])

然后在
js
任务中使用相同的格式


第二个错误(来自您的监视任务)是因为您需要将正在监视的任务打包为
系列
并行
,即使只有一个任务,也要更改:

gulp.watch(['node_modules/bootstrap/scss/bootstrap.scss','src/scss/*.scss'],'sass');

致:


gulp.watch(['node_modules/bootstrap/scss/bootstrap.scss',src/scss/*.scss'],gulp.series('sass');

我确实喜欢你说的,它抛出了这个错误:监视node_modules/bootstrap/scss/bootstrap.scss,src/scss/*.scss:“监视任务”必须是一个函数(可以选择使用gulp.parallel或gulp.series生成)在Gulp.watch(C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node\u modules\Gulp\index.js:31:11)在C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\gulpfile.js:25:10服务器上,按照Sam所说的,我遇到了这个错误:在gulp.watch上监视node_modules/Bootstrap/scss/Bootstrap.scss,src/scss/*.scss:watch任务必须是一个函数(可以选择使用gulp.parallel或gulp.series生成)(C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\node\u modules\gulp\index.js:31:11)在C:\Users\Saviour\Desktop\Portfolio\Bootstrap\Project1\gulpfile.js:25:10的serveSecond crack of the whip-Hey Alaa,我已经为您更新了我的答案,基本上是因为错误是说您必须始终将任务打包为
系列
并行
,即使它只是一个任务!我实际上已经运行了更新版本的co最后,我在更正gulp.watch(['node_modules/bootstrap/scss/bootstrap.scss',src/scss/*.scss'],gulp.series('sass'))后完成了工作;我在[Browsersync]中遇到的最后一件事是无法打开浏览器(如果您在无头环境中使用Browsersync,您可能希望将打开选项设置为false)对于这个问题,stackoverflow上已经有了一些答案。首先,我将把这个
浏览器:'chrome'
添加到你的
browserSync.init({
或者看看这个:或者这个:我已经尝试了这个或更多,但没有任何更改browserSync.init({port:3001,server:{baseDir:“./src”,open:true},watchTask:true,浏览器:“chrome.exe”,notify:false});