2017-02-05 3 views
0

Я пытаюсь использовать:Как использовать momentjs на ember.js маршрутизаторе

import moment from 'moment';

но бросить эту ошибку:

Could not find module 'moment' imported from 'myproject/routes/myroute'

Если простое использование момент() as:

model(params){ 
    return this.get('store').query('myentity', { 
    filter: { 
     timestamp: { 
     $ge: moment(params.day).startOf('day').format('x'), 
     $le: moment(params.day).endOf('day').format('x') 
     } 
    } 
    }); 
} 

введите эту ошибку:

Error while processing route: myroute Cannot read property '_calendar' of undefined TypeError: Cannot read property '_calendar' of undefined

Примечание 01: Я импортировать momentjs из беседки, обновить свой jshintrc включить "момент" на predec и включают в себя "момент" на Ember-кли-сборке тоже.

Примечание 02: Я вижу адронный момент, но я хочу узнать, как он работает, чтобы применить к возможным другим библиотекам.

ответ

1

Если вы установили что-то из беседки, его просто связали с вашим vendor.js. Таким образом, он недоступен в качестве модуля ES6, но если он экспортирует глобальный доступный. Таким образом, вы можете просто использовать глобальный moment.

В частности, на данный момент я рекомендую ember-cli-moment-shim.

В целом для всех модулей я рекомендую установить их с npm и использовать ember-browserify.

Если вы импортируете что-то с app.import и хотите использовать его в качестве модуля ES6, правильным решением будет write a vendor-shim.

1

Я никогда не пытался momentjs с дачей, но если вы установите что-то с беседкой, вы должны import it in ember-cli-build.js

Другое решение (которое я предпочитаю использовать и сам) устанавливает ember-browserify. После этого вы можете установить момент (и любую библиотеку, опубликованную в npm и способную работать в среде браузера) через npm (npm install moment --save-dev) и импортировать ее в свой маршрутизатор/контроллер/независимо от import moment from 'npm:moment'.