Как требовать JQuery в Node, используя Gulp? - PullRequest
0 голосов
/ 26 сентября 2018

Построение PWA поверх NodeJS.Использование gulp для процессов package/bundle для производства.Также используется jQuery.

Получение ошибки:

Uncaught ReferenceError: jQuery не определен

package.json:

"devDependencies": {
  "browserify": "^16.2.2",
  "gulp": "^3.9.1",
  "gulp-browserify": "^0.5.1",
  "gulp-clean-css": "^3.10.0",
  "gulp-concat-css": "^3.1.0",
  "gulp-if": "^2.0.2",
  "gulp-sourcemaps": "^2.6.4",
  "gulp-uglify": "^3.0.1",
  "gulp-webserver": "^0.9.1",
  "jquery": "^3.3.1",
  "sw-precache": "^5.2.1"
}

Задание Gulp:

gulp.task('js', function () {
return gulp.src(src + '/js/app.js')
    .pipe(browserify())
    .pipe(gulpif(environment === 'production', uglify()))
    .on('error', function (err) {
        console.error('Error!', err.message);
    })
    .pipe(gulp.dest(dest + '/js'));
});

app.js:

(function () {
  'use strict';
  var $ = jQuery = require('jquery');
  require('./bootstrap-3.3.7.min.js');
  $('.loader').fadeOut(1000);

  if ('serviceWorker' in navigator) {
    navigator.serviceWorker
    .register('./service-worker.js')
    .then(function (registration) 
      console.log('Service Worker Active', registration.scope);
    })
    .catch(function (err) {
      console.log('Service worker registration failed : ', err);
    });
  }
})(); // Page Ready

Если мое понимание узла верное, jQuery включается из вызова requireперед тем как использовать $.Поэтому я не понимаю, почему я получаю сообщение об ошибке.

Обратите внимание, что, хотя у других постов были проблемы с Browserify и jQUery, я не думаю, что это проблема.

1 Ответ

0 голосов
/ 26 сентября 2018

Вы используете use strict, что предотвращает любое ошибочное создание глобальной переменной.

Таким образом, когда проблема с var $ = jQuery = require('jquery'); в качестве случайной переменной, jQuery, который не существует, создается как глобальная переменная и назначаетсядо $.use strict предотвратил это.

Просто используйте

'use strict';
 var $ = require('jquery');

Также прочитайте Что делает «использовать строгий» в JavaScript

...