Mercer_A
@Mercer_A

Как исправить ошибку TypeError: expected a string, в gulp?

Занимался настройкой gulp по гайду, все один в один, но у меня появляется ошибка.
[19:55:55] Using gulpfile D:\gulp-2022\gulpfile.js
[19:55:55] Starting 'default'...
[19:55:55] Starting 'reset'...
[19:55:55] Finished 'reset' after 13 ms
[19:55:55] Starting 'copy'...
[19:55:55] Starting 'html'...
[19:55:56] Finished 'html' after 21 ms
[19:55:56] Finished 'copy' after 23 ms
[19:55:56] Starting 'watcher'...
[19:55:56] 'watcher' errored after 11 ms
[19:55:56] TypeError: expected a string
    at module.exports (D:\gulp-2022\node_modules\is-negated-glob\index.js:5:11)
    at sortGlobs (D:\gulp-2022\node_modules\glob-watcher\index.js:67:18)
    at Array.forEach (<anonymous>)
    at watch (D:\gulp-2022\node_modules\glob-watcher\index.js:64:18)
    at Gulp.watch (D:\gulp-2022\node_modules\gulp\index.js:48:10)
    at watcher (file:///D:/gulp-2022/gulpfile.js:15:8)
    at bound (node:domain:433:15)
    at runBound (node:domain:444:12)
    at asyncRunner (D:\gulp-2022\node_modules\async-done\index.js:55:18)
    at processTicksAndRejections (node:internal/process/task_queues:78:11)
[19:55:56] 'default' errored after 50 ms


6340603f1e33f110000099.png

Понял, что ошибка появляется после добавления строк связанных с папкой html, но из-за чего именно понять не могу.

Код до ошибок.

// html.js

//path.js
import * as nodePath from 'path';
const rootFolder = nodePath.basename(nodePath.resolve());

const buildFolder = `./dist`;
const srcFolder = `./src`;

export const path = { 
  build: {
    files: `${buildFolder}/files/`,
  },
  src: {
    files: `${srcFolder}/files/**/*.*`,
  },
  watch: {
    files: `${srcFolder}/files/**/*.*`,
  },

  clean: buildFolder,
  buildFolder: buildFolder,
  srcFolder: srcFolder,
  rootFolder: rootFolder,
  ftp: ``,
}

//gulpfile.js
import gulp from "gulp";
import { path } from "./gulp/config/path.js";

global.app = {
  path: path,
  gulp: gulp,
}

import { copy } from "./gulp/tasks/copy.js";
import { reset } from "./gulp/tasks/reset.js";

function watcher () {
  gulp.watch(path.watch.files, copy)
}

const dev = gulp.series(reset, copy, watcher);

gulp.task('default', dev);


Код с ошибкой.

// html.js
export const html = () => { 
  return app.gulp.src(app.path.src.html)
    .pipe(app.gulp.dest(app.path.build.html))
}

//path.js
import * as nodePath from 'path';
const rootFolder = nodePath.basename(nodePath.resolve());

const buildFolder = `./dist`;
const srcFolder = `./src`;

export const path = { 
  build: {
    html: `${buildFolder}/`,
    files: `${buildFolder}/files/`,
  },
  src: {
    html: `${srcFolder}/*.html`,
    files: `${srcFolder}/files/**/*.*`,
  },
  watch: {
    files: `${srcFolder}/**/*.html`,
    files: `${srcFolder}/files/**/*.*`,
  },

  clean: buildFolder,
  buildFolder: buildFolder,
  srcFolder: srcFolder,
  rootFolder: rootFolder,
  ftp: ``,
}

//gulpfile.js
import gulp from "gulp";
import { path } from "./gulp/config/path.js";

global.app = {
  path: path,
  gulp: gulp,
}

import { copy } from "./gulp/tasks/copy.js";
import { reset } from "./gulp/tasks/reset.js";
import { html } from "./gulp/tasks/html.js";

function watcher () {
  gulp.watch(path.watch.files, copy)
  gulp.watch(path.watch.html, html)
}

const mainTasks = gulp.parallel(copy, html);

//сценарий
const dev = gulp.series(reset, mainTasks, watcher);

gulp.task('default', dev);


UPD: как выяснилось на функционал того, что должны делать добавленые строки в html ошибка не влияет, но она не дает отслеживать дальнейшие действия тк watcher прекращает работу.
UPD2:если в сценарии gulpfile.js убрать watcher то ошибка пропадает
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы