2014-09-29 4 views
1

Итак, я экспортирую PNotify из беседки в папку js. Я использую requirejs включить мои библиотекиНевозможно включить PNotify с requirejs

HTML

<script data-main="assets/js/app" type="text/javascript" src="assets/js/lib/require.js"></script> 

Моя архитектура такова:

js 
--- app.js 
--- lib 
------ pnotify.core.js 
------ pnotify.desktop.js 
------ pnotify.buttons.js 
------ pnotify.callbacks.js 
------ pnotify.confirm.js 
------ pnotify.history.js 
------ pnotify.nonblock.js 
------ pnotify.reference.js 
------ jquery.js 
------ ... 

добавить основной модуль, который pnotify.core

APP .JS

requirejs.config({ 
    base: '/assets/js', 
    paths: { 
     'jQuery': 'lib/jquery.min', 
     'underscore': 'lib/underscore-min', 
     'Backbone': 'lib/backbone', 
     'Modernizr' : 'lib/modernizr', 
     'PNotify' : 'lib/pnotify.core', 
     'LoginView' : 'views/login' 
    }, 
    shim: { 
     'jQuery': { 
      exports: '$' 
     }, 
     'underscore': { 
      exports: '_' 
     }, 
     'Backbone': { 
      exports: 'Backbone' 
     }, 
     'Modernizr': { 
      exports: 'Modernizr' 
     }, 
     'LoginView': { 
      exports: 'LoginView' 
     }, 
     'PNotify': { 
      exports: 'PNotify' 
     } 
    } 
}); 

PNotify загружен на мою страницу. Как правило, PNotify работает с requirejs: https://github.com/sciactive/pnotify#using-pnotify-with-requirejs

Я не знаю, как я могу импортировать все модули, возможно, объединить эти модули в один файл pnotify.min.js?

Здесь, когда я называю PNotify объект под requirejs.config

define(['jQuery', 'underscore', 'Backbone', 'Modernizr', 'LoginView', 'PNotify'], function ($, _, Backbone, Modernizr, LoginView, PNotify) { 
    $(document).ready(function(){ 
     new PNotify({ 
      title: 'Desktop Notice', 
      text: 'If you\'ve given me permission, I\'ll appear as a desktop notification. If you haven\'t, I\'ll still appear as a regular PNotify notice.' 
     }); 
    }); 
}); 

У меня есть эта ошибка: Uncaught TypeError: undefined is not a function на линии "новый PNotify" ...

Есть ли у вас какие-нибудь идеи?

ответ

1

Когда они обнаруживают AMD/RequireJS, ядро ​​PNotify определяет модуль с именем "pnotify", а также модули PNotify в каждый определяют имена, как "pnotify.module". В следующем примере показано использование неблокированных и настольных модулей с RequireJS.

Так что моя ошибка здесь

requirejs.config({ 
    base: '/assets/js', 
    paths: { 
     'jQuery': 'lib/jquery.min', 
     'underscore': 'lib/underscore-min', 
     'Backbone': 'lib/backbone', 
     'Modernizr' : 'lib/modernizr', 
     'PNotify' : 'lib/pnotify.core', 
      ^_____ 'replace by pnotify' 
     'LoginView' : 'views/login' 
    }, 
    ... 
-1

скомпилировать все модули в одном уменьшенную файл.

Эти настройки работают для меня в Require.js

paths: { 
    'pnotify': 'lib/pnotify.min', 
    'pnotify.nonblock': 'lib/pnotify.min', 
    'pnotify.desktop': 'lib/pnotify.min, 
    'jquery' : 'lib/jquery' 
} 

define(['jquery', 'pnotify','pnotify.nonblock', 'pnotify.desktop', function($, pnotify){ 

    new PNotify({ 
     title: 'Desktop Notice', 
     text: 'If you\'ve given me permission, I\'ll appear as a desktop notification. If you haven\'t, I\'ll still appear as a regular PNotify notice.', 
     desktop: { 
      desktop: true 
     }, 
     nonblock: { 
      nonblock: true 
     } 
    }); 
}); 
Смежные вопросы