Почему возникает ошибка "TypeError: ожидалась строка"?

Как можно исправить ошибку "TypeError: expected a string" в функции "watching()" в строке кода, где используется метод "watch()" с аргументами "['app/js/**/*.js',!'app/js/main.min.js']" и "scripts"? Вот сам код:

watch(['app/js/**/*.js',!'app/js/main.min.js'], scripts)

const {src, dest, watch, parallel} = require('gulp');

const scss_css = require('gulp-sass')(require('sass'));
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const browserSync = require('browser-sync').create();

function browsersync() {
  browserSync.init({
    server: {
      baseDir: './app'
    }
  });
}

function styles() {
  return src('app/scss/style.scss')
    .pipe(scss_css({outputStyle: 'compressed'}))
    .pipe(concat('style.min.css'))
    .pipe(dest('app/css'))
    .pipe(browserSync.stream())
}

function scripts() {
  return src([
    'node_modules/jquery/dist/jquery.js',
    'app/js/main.js'
  ])
  .pipe(concat('main.min.js'))
  .pipe(uglify())
  .pipe(dest('app/js'))
  .pipe(browserSync.stream())
}

function watching() {
  watch(['app/scss/**/*.scss'], styles)
  watch(['app/js/**/*.js',!'app/js/main.min.js'], scripts)
  watch(['app/**/*.html']).on('change', browserSync.reload)
}

 exports.watching = watching;

Можете ли вы помочь мне разобраться с этой проблемой?
  • 17 сентября 2023 г. 12:17
Ответы на вопрос 2
Ошибка "TypeError: expected a string" возникает, когда передается аргумент, ожидающий строку, но вместо этого передается другой тип данных. В данном случае ошибка возникает при вызове функции `watch()`, где первым аргументом передается массив `['app/js/**/*.js',!'app/js/main.min.js']`.

Метод `watch()` ожидает передачи строк в качестве аргументов, поэтому массив нужно преобразовать в строку, используя метод `join()`. Вот как это можно исправить:

```
watch(['app/js/**/*.js', '!' + 'app/js/main.min.js'].join(','), scripts)
```

Мы добавляем пустую строку в начале, чтобы соединить элементы массива в строку, разделенную запятой.
function watching() {
   watch(['app/scss/**/*.scss'], styles);
   watch(['app/js/**/*.js','!app/js/main.min.js'], scripts);
   watch(['app/**/*.html']).on('change', browserSync.reload);
}
Похожие вопросы