Uncaught TypeError: Невозможно установить для свойства «[любой AMD]» значение undefined.

Пример модуля scrollmagic, но такое бывает и с другими. Я подозреваю, что это для Вавилона, но не уверен.

Как мы можем воспроизвести эту ошибку?

  1. Git clone https://github.com/zurb/foundation-zurb-template имя проекта

  2. Установить:

    • npm install gsap --save-dev
    • bower установить scrollmagic --save-dev
  3. Добавьте текстовую строку config.yml:

    • "node_modules/gsap/src/uncompressed/TweenMax.js"
    • "bower_components / scrollmagic / scrollmagic / без сжатия / ScrollMagic.js"
    • "bower_components / scrollmagic / scrollmagic / несжатый / плагины / animation.gsap.js"
    • "bower_components / scrollmagic / scrollmagic / несжатый / плагины / debug.addIndicators.js"
    • "bower_components / scrollmagic / scrollmagic / без сжатия / плагины / jquery.ScrollMagic.js"
  4. npm start

Что произошло вместо этого?

В консоли Google Chrome: Uncaught TypeError: Cannot set property 'ScrollMagic' of undefined

Google Chrome: captura

Firefox: captura2


person York Xtrem    schedule 27.10.2016    source источник


Ответы (1)


Я нашел проблему, но не решил ее. - 1 ответ Stackoverflow

При использовании Babel 6 и babel-preset-es2015 (или Babel 5) Babel по умолчанию предполагает, что файлы, которые он обрабатывает, являются модулями ES6. Проблема, которая вызывает у вас проблемы, заключается в том, что в модуле ES6 это значение не определено, тогда как в случае «сценария» это зависит от среды, например, окно в сценарии браузера или экспорт в коде CommonJS.

Проблема в том, что у меня есть файлы в ES6, а у других нет. Придется ли здесь разделять файлы? Как?

// Combine JavaScript into one file
// In production, the file is minified
function javascript() {
  return gulp.src(PATHS.javascript)
    .pipe($.sourcemaps.init())
    .pipe($.babel())
    .pipe($.concat('app.js'))
    .pipe($.if(PRODUCTION, $.uglify()
      .on('error', e => { console.log(e); })
    ))
    .pipe($.if(!PRODUCTION, $.sourcemaps.write()))
    .pipe(gulp.dest(PATHS.dist + '/assets/js'));
}

Почему не так? Объяснение...

Измените файл javascript.

Измените это на undefined

Кроме этого:

} else if (typeof exports === 'object') {

}(this, function () {
    "use strict";

    var ScrollMagic = function () {

to

} else if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') {


})(undefined, function () {
    "use strict";

    var ScrollMagic = function ScrollMagic() {

Фрагмент кода:

Перед тем как это сделать:

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(factory);
    } else if (typeof exports === 'object') {
        // CommonJS
        module.exports = factory();
    } else {
        // Browser global
        root.ScrollMagic = factory();
    }
}(this, function () {
    "use strict";

    var ScrollMagic = function () {

После этого:

(function (root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(factory);
    } else if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') {
        // CommonJS
        module.exports = factory();
    } else {
        // Browser global
        root.ScrollMagic = factory();
    }
})(undefined, function () {
    "use strict";

    var ScrollMagic = function ScrollMagic() {
person York Xtrem    schedule 27.10.2016