Невозможный включать momentjs в Laravel5 с 'laravel-mix'

Я использую laravel-5 что приходит с webpack и laravel-mix, идея состоит в том, чтобы использовать книжный магазин datetimepicker который он одновременно использует momentjs. Проблема состоит в том, что я не могу включить книжный магазин ни одного из способов.

Я протестировал все то, что я смог читать, но только вещь заставила меня продвигаться:

Сначала

npm install datetimepicker --save-dev
npm install moment --save-dev

Потом одна из этой двух:

Делать один require('../../../node_modules/moment/min/moment-with-locales.js'); в resources/assets/js/app.js

Или издавать webpack.mix.js:

mix.js([
  //Plugins
  'node_modules/moment/min/moment-with-locales.js',
  'node_modules/admin-lte/plugins/daterangepicker/daterangepicker.js',
], 'public/js/app.js');

После обоих случаев он работает npm run dev или npm watch, перед тем, как заканчиваться всегда у меня выходит следующая ошибка:

WARNING in ./~/moment/min/moment.min.js
Module not found: Error: Can't resolve './locale' in '/proyecto/node_modules/moment/min'
 @ ./~/moment/min/moment.min.js 6:16637-16659

В смогший прочитать достаточно на теме, и только я нашел способ, в котором не появляется ошибка, они это говорят здесь.

Все же, составляя хорошо и не давая никакой ошибки, когда я пробую выполнять console.log(moment().millisecond()); всегда он дает мне ошибку в консоли: ReferenceError: moment is not defined

Они комментируют на самой странице momentjs использовать var moment = require(...), что также это комментируют в issue github, но совсем не, то же самое.

Кто-то, кто использовал бы datetimepicker или в Вашем недостатке momentjs с Laravel5 знай, как включать книжный магазин без ошибок?

Мой файл resources/assets/js/app.js:

require('./bootstrap');

//var moment = require('moment');
require('../../../node_modules/moment/min/moment-with-locales.js');
console.log(moment().millisecond());
require('../../../node_modules/admin-lte/plugins/daterangepicker/daterangepicker.js');

2
задан 05.03.2018, 16:39
3 ответа

Для explircarte я буду предполагать, что мы находимся в новом проекте с laravel, as¦-:

  1. Мы Устанавливаем рекомендуемый versi¦n laravel 5.4, которая приходит с webpack и laravel-mix готовые для Вашего использования.

    composer create-project --prefer-dist laravel/laravel project-with-moment
    

    , где project-with-moment - имя папки, что contendrÃ: проект.

  2. Вводя информацию в компьютер в проект, в laravel мы будем использовать npm, чтобы устанавливать зависимости

    npm install
    npm install moment --save
    
  3. Сейчас, как будут сделаны изменения в файлах .js, и захотим отразить их в нашем проекте instantÃ: neamente, мы используем:

    npm run watch
    
  4. , Чтобы решать твое пунктуальное сомнение, я буду опускать c¦digo ненужно начального set, который он приносит laravel.

    в каталоге твоего проекта, в файле resources/assets/js/bootstrap.js опуская весь существующий c¦digo, мы добавляем следующий l¦-nea:

    window.moment = require('moment');
    

    это создает глобальную переменную, чтобы соглашаться в momentjs.

  5. добавляет app.js к markup настоящего проекта. Ты можешь делать это с:

    <script src="{{ mix('js/app.js') }}"></script> 
    

Занес в список, уже у тебя есть momentjs установленный и конфигурировавший глобально

простых Доказательств

  1. введи информацию в компьютер в консоль твоего излюбленного браузера и выполни moment(). VerÃ: s результат без ningún ошибка.

    Ejemplo MomentJs en consola del navegador

  2. Использует такого Vue js как твой Framework разработки Javascript.

    в файле resources/assets/js/components/app.js/ ищет инстанцию, которую он приносит по умолчанию laravel и налаживает c¦digo для того, чтобы видели как:

    const app = new Vue({
        el: '#app',
        data: {           
            time: moment().format('Y-M-d H:mm:ss')
        }
    });
    

    , Где time будет являться информацией твоего instacia Vue.

    В твоем markup добавляет идентификатора app к одному из твоих элементов, и печатает информацию time

    <div id="app" class="title m-b-md">
        @{{ time }}
    </div>
    

Asà - obtendrÃ: s прямо в html желанный результат Ejemplo MomentJs en vista

6
ответ дан 03.12.2019, 12:41
  • 1
    ¡ Совершенный! ¡ Функционируй! ¡ Большое спасибо! Я буду исследовать на этом, но вопрос, - ¿ каково различие между одним и другой? Оба deberí an включения librerí в. Я был должен делать то же самое с laroute, если querí чтобы это помещать в webpack.mix.js. ¿ Podrí схвати расширять ответ с этими данными? – Sakrow 16.08.2017, 19:45
  • 2
    Ты имеешь в виду различие между moment и moment-with-locale? – Eduardo Gh 16.08.2017, 20:13
  • 3
    Нет, в различие делания одного include('../../..'); и делания ' window.moment = require('moment'); porqué формы, если, что функционирует и другой не, когда (в меня понимать, хотя я очевидно запутан) обе deberí an включения librerí в. – Sakrow 16.08.2017, 20:21
  • 4
    Использовав require('../../../node_modules/moment/min/moment.min.js'); está s требуя файла в твоем проекте, но именно, как он был показан в нескольких issues, примере этих , есть проблемы с какими-то файлами, касающимися этого файла и Вашей совместимостью с webpack. Делая require('moment') está s требуя прямо модуля внутри ' node_modules' я не эксперт по теме но aquí есть má s informació n. Я жду лучший ответ. – Eduardo Gh 16.08.2017, 22:10
  • 5
    Совершенный, вся informació n добавочный añ adirí в в ответ, для того, чтобы человек, который находится в той же situació n имейте это в виду. Снова, спасибо. – Sakrow 16.08.2017, 22:13

Я только что воспроизвел проблему и это оплатил меняясь:

//var moment = require('moment');
require('../../../node_modules/moment/min/moment-with-locales.js');

из твоего файла resources/assets/js/app.js из-за:

window.moment = require('moment');

DespuГ©s применения npm run dev или npm run watch снова, она librerГ - в уже доступная эра с консоли и было возможно менять языка с нею funciГіn locale:

moment().locale('es').format('LLL');
1
ответ дан 03.12.2019, 12:41

У него была та же проблема, я использую laravel 6 Проблема состоит в том, что в момент выполнения команды, чтобы устанавливать moment js npm install moment --save, как кажется, если устанавливается она librerГ - в, но если ты уходишь в папку node_modules/moment, где предполагается, что estarГ-an файлы ее librerГ - в только появляется файл package.json.

, то, что ты должен делать, чтобы это решать, состоит в том, чтобы идти в хранилище github momentjs

https://github.com/moment/moment /

И загружаться или клонировать хранилище внутри папки node_modules/moment

И с этим решается проблема.

-1
ответ дан 03.12.2019, 12:41