У меня есть модуль, который требует подчеркивание:Пакетирования подчеркивает с JSPM
import _ from "underscore"
var numbers = [1, 4, 6, 7, 9, 3, 22, 11, 54, 99, 100];
var evens = _.filter(numbers, x => x % 2 === 0);
document.getElementById('output').innerText = evens;
Это прекрасно работает в моем глотке задаче:
gulp.task('process-scripts', function(cb) {
var builder = new Builder('Scripts', 'Scripts/config.js');
builder.buildStatic('main.js', 'app/main.min.js', { minify: true });
cb();
});
И с этим тегом сценария:
<script src="/app/main.min.js"></script>
Проблема в том, что я хочу вывести подчеркивание в свой собственный скрипт. Так что я изменил мою глотком задачу:
gulp.task('process-scripts', function(cb) {
var builder = new Builder('Scripts', 'Scripts/config.js');
builder.buildStatic('underscore', 'app/vendor.min.js', { minify: true });
builder.buildStatic('main.js - underscore', 'app/main.min.js', { minify: true, globalDeps: {underscore: '_'} });
cb();
});
Это, я получаю подчеркивание вытаскивают из основного пучка и положить в комплект поставки поставщика. В нижней части main.min.js, пучок создает этот код:
(function(factory) {
factory(_);
});
И я получаю ошибку: «неперехваченным ReferenceError: _ не определен»
Я попытался это то же самое с помощью JQuery в место подчеркивания, и он работал просто отлично. То, что я заметил при прохождении кода, заключается в том, что, когда вызывается код в нижней части main, на объекте окна был найден $
, и поэтому ошибок не было.
Как я могу заставить основной модуль распознавать подчеркивание в сценарии поставщика?
вы включают в себя приложение/vendor.min.js до приложения/main.min.js? только приложение/vendor.min.js объявляет _ как глобальную переменную? –
Да, тег сценария app/vendor.min.js появляется перед app/main.min.js Файл vendor.min.js является только подчеркиванием, которое было установлено с помощью 'jspm install underscore' Это на карте объект config.js как: ..., карты: { "подчеркивание": "НПМ: [email protected]" }, ... –