"Не удается найти модуль" jquery "" - обработка глобальных переменных для JQuery и AngularJS в браузере Gulp

Я пытался создать проект, который использует AngularJS, Browserify а также Gulp для превосходного опыта разработчика, который производит распространяемый "модуль" (на языке Angular). Идея в том, чтобы иметь самодокументированный проект, как Angular Bootstrap, который также производит распределение расходных материалов для использования в другом приложении.

У нас были отличные результаты с Gulp, но у нас проблемы с browserify/browserify-shim, Кроме того, к сожалению, большинство примеров там не используют gulp, или используют gulp-browserify, который был в черном списке / закончен.

Мы в том числе AngularJS а также JQuery от Google CDN как <script> теги и объявили "angular" : "global:angular" а также "jquery" : "global:$" в нашем browserify-shim конфиг в package.json, но мы получаем "cannot find module" когда мы пытаемся использовать var angular = require('angular') а также var $ = require('jquery') внутри нашего browserified-кода (как только он запускается в браузере).

Я создал пример проекта, который показывает, что это близко к минимуму.

Пример хранилища кода доступен по адресу

После клонирования вы запускаете 'npm install', затем 'bower install', затем 'gulp' от корня multi-browserify папка для генерации файлов и запуска тестового сервера.

Запустив gulp, вы можете получить доступ к живому HTML на http://:4000/gulp.html.

Любая помощь будет принята с благодарностью - мне интересно, если мы столкнулись с ошибкой / проблемой с пересечением gulp, browserify, винил-источник-поток, и т. Д., Или, более вероятно, мы просто еще не совсем получили это,

2 ответа

Требуется ли получение ваших зависимостей из CDN? Если нет, вы можете использовать npm для своих зависимостей и позволить browserify их использовать для вас.

JQuery и Angular доступны через npm, поэтому, используя в качестве примера jquery, вы можете просто объявить его в своем package.json, вот так:

  ...
  "dependencies": {
    "jquery": "^1.11.1"
  },
  ...

В качестве альтернативы, работает npm install <package> -s из каталога, содержащего ваши package.json установит указанный модуль и сохранит его как зависимость в вашем package.json файл.

После того, как вы установили эту зависимость (и любые другие, которые вам нужны), вы можете пойти дальше и использовать их в своем app.js следующим образом:

var $ = require('jquery');

$('<div>Hello World, I\'m using JQuery!</div>').appendTo('body');

Все просто, и вам не нужно использовать bower или browserify-shim - browserify проверит вашу папку node_modules и найдет их. Я не пробовал это с angular (у меня была проблема при попытке установить его) - но он доступен через npm, поэтому он должен работать.

# assuming you have installed jquery locally instead of globally
npm install jquery -s         # without -g flag

вместо require ("jquery") укажите относительный путь из исходного каталога
require ("./node_modules/jquery/dist/jquery.min.js");

Попробуйте следующее:

<script>window.$ = window.jQuery = require('./node_modules/jquery/dist/jquery.min.js');</script>

ИЛИ ЖЕ

<script>var $ = jQuery = require('./node_modules/jquery/dist/jquery.min.js');</script>
Другие вопросы по тегам