Момент .js - undefined
Я только что обновил форму [email protected] на [email protected] в своем приложении Ember.js, и теперь я получаю сообщение об ошибке, когда момент не задан, когда я ввожу момент() в консоль или включаю его в свой скрипты.
В документах я увидел: "Начиная с версии 2.4.0 объект, экспортированный в глобальном масштабе, устарел". который, я думаю, здесь проблема, но я не уверен, как я могу установить момент глобально в ember, так что все ссылки на moment() в нашей базе кода в настоящее время не нарушены.
Я попытался обновить строку, в которой мы делали запрос ( "момент" ), чтобы var moment = require ( "moment" ), но он имеет тот же результат. Даже если я поставлю отладчик непосредственно после строки var moment =..., а затем введите момент() в консоль, я до сих пор получаю этот момент undefined.
Ответы
Ответ 1
Вы хотите раздел Browser новой документации.
Итак...
<script src="moment.js"></script>
<script>
moment().format();
</script>
Edit
Сказав это, похоже, что это, вероятно, даст вам ту же проблему.
Похоже, Moment.js пытается побудить вас использовать диспетчер пакетов, чтобы не загрязнять пространство имен глобальными переменными.
Прочитайте CommonJS и AMD, и попробуйте включить его в свой текущий стек.
Вы должны делать что-то вроде:
var moment = require('moment');
moment().format();
Но для использования require
вам нужна модульная система, подобная тем, которые были упомянуты выше.
Но
Очевидным решением является откат вашей версии Moment.js, если вам не нужны новые функции. Насколько важным может быть обновление в простой библиотеке времени и времени?
Ответ 2
Это происходит, когда до момента moment.js уже включен какой-либо менеджер пакетов/загрузчик:
![moment detects a package manager]()
Вы можете увидеть этот момент обнаруживает
-
module.exports
-
define.amd
и если нет ничего подобного, то global.moment
.
global
переменная на самом деле является window
. factory
переменная - это function
ниже, представляющая закрытие области действия момента.
Две возможности:
a) убедитесь, что нет никакого CommonJS/SystemJS... менеджера пакетов/загрузчика до <script src="/scripts/moment-with-locales.js">
б) следуйте @shennan ответу и загружайте момент с помощью менеджера/загрузчика пакетов, например, используя SystemJS:
SystemJS.import('/scripts/moment-with-locales.js').then(function(moment) {
moment.locale('fr');
});