首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gup4watch() TypeError:期望一个字符串

Gup4watch() TypeError:期望一个字符串
EN

Stack Overflow用户
提问于 2019-11-17 09:48:40
回答 1查看 2.4K关注 0票数 3

我在开始吞咽时遇到了一个问题。我得到的信息来自https://coder-coder.com/gulp-4-walk-through/https://www.youtube.com/watch?v=-lG0kDeuSJk

我的gulpfile.js

代码语言:javascript
复制
// Initialize modules
const { src, dest, watch, series, parallel } = require('gulp');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');
const concat = require('gulp-concat');
const postcss = require('gulp-postcss');
const replace = require('gulp-replace');
const sass = require('gulp-sass');
const sourcemaps = require('gulp-sourcemaps');
const terser = require('gulp-terser');

// File path variables
const files = {
  scssPath: './assets/styles/sass/**/*.scss',
  jsPath: './assets/js/**/*.js'
}

// Sass taks
function scssTask(){
 return src(files.scssPath)
   .pipe(sourcemaps.init())
   .pipe(sass())
   .pipe(postcss([ autoprefixer(), cssnano() ]))
   .pipe(sourcemaps.write('.'))
   .pipe(dest('dist'));
}

 // JS taks
 function jsTask(){
   return src(files.jsPath)
       .pipe(concat('main.js'))
       .pipe(terser())
       .pipe(dest('dist'));
 }

 // Cachebusting taks
 const cbString = new Date().getTime();
 function cacheBustTask(){
   return src(['index.html'])
       .pipe(replace(/cb=\d+/g, 'cb=' + cbString))
       .pipe(dest('.'));
 }     

 // Watch taks
 function watchTask(){
   watch([files.scssPath, files.jsFiles],
     series(
       parallel(scssTask, jsTask),
       cacheBustTask
     )
   );
 }
 // Default task
 exports.default = series(
   parallel(scssTask, jsTask),
   cacheBustTask,
   watchTask
 );

当我开始命令吞咽文件夹时,我会看到一个错误,上面写着:

09:53:25 'watchTask‘在1.81 ms后出错

09:53:25 TypeError:预期字符串

代码语言:javascript
复制
at module.exports (D:\Web-Development\Startup\practise\sassStructure-Copy\node_modules\is-negated-glob\index.js:5:11)

at sortGlobs (D:\Web-Development\Startup\practise\sassStructure-Copy\node_modules\glob-watcher\index.js:66:18)

at Array.forEach (<anonymous>)

at watch (D:\Web-Development\Startup\practise\sassStructure-Copy\node_modules\glob-watcher\index.js:63:18)

at Gulp.watch (D:\Web-Development\Startup\practise\sassStructure-Copy\node_modules\gulp\index.js:48:10)

at watchTask (D:\Web-Development\Startup\practise\sassStructure-Copy\gulpfile.js:46:3)

at bound (domain.js:420:14)

at runBound (domain.js:433:12)

at asyncRunner (D:\Web-Development\Startup\practise\sassStructure-Copy\node_modules\async-done\index.js:55:18)

at processTicksAndRejections (internal/process/task_queues.js:75:11)

09:53:25‘在721毫秒后出错

我怎么解决这个问题?它期望字符串,我给它一个字符串喷射器,它不工作。我已经把

代码语言:javascript
复制
   function watchTask(){
      watch([files.scssPath, files.jsFiles],
        series(
          parallel(scssTask, jsTask),
          cacheBustTask
        )
      );
    }

然后我没有错误,watchTask启动,但是没有文件被更新,只是沉默哈哈。

下面是文件夹结构:a link

有人能解释一下为什么它不知道它和每个人的项目一样是字符串,我必须用toString()将它转换为string,以及为什么watchTask监视函数不识别任何更新?谢谢已经提前了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-17 10:04:02

似乎您使用了错误的变量名。应该使用jsPath。不管怎样,尽量让它更易读.例如,您可以使用:

代码语言:javascript
复制
const watch = function() {
    gulp.watch("./assets/styles/sass/**/*.scss", {usePolling : true}, gulp.series(css));
    gulp.watch("./assets/js/**/*.js", {usePolling : true}, gulp.series(js));
};

如果您使用此代码,就没有必要在代码的第一行中使用watch。

最后,把这个块做成这样:

代码语言:javascript
复制
 // Default task
 exports.default = series(
   parallel(scssTask, jsTask),
   cacheBustTask,
   watch
 );

exports.watch =观察;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58899241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档