Laravel CKEditor5 - ClassicEditor не определен - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь заменить старую версию CKEditor в приложении Laravel из-за несовместимости зависимостей с unisharp/laravel-ckeditor и Laravel 6. Я нашел страницу CKEditor 5 с инструкциями по установке NPM, но не смог заставить его работать. Вот мой код:

resources/main.js

require('@ckeditor/ckeditor5-build-classic');

$(document).ready(function(){
  ClassicEditor.create($('#edit_about_text').get()[0]);
});

webpack.mix.js

mix.js('resources/assets/js/main.js', 'public/js');

layouts/master.blade.php

<!doctype html>
<html>
  <head></head>
<body>
  <script src="{{ asset('js/main.js') }}"></script>
</body>
</html>

jQuery включен (каким-то образом; несколько незнаком с webpack), но запуск страницы, которая расширяет @extends('layouts.master'), приводит к следующему:

Uncaught ReferenceError: ClassicEditor не определен

Если я удаляю оператор require() из main.js и просто использую ссылку CDN, все работает как положено:

<script src="https://cdn.ckeditor.com/ckeditor5/16.0.0/classic/ckeditor.js"></script>
<script src="{{ asset('js/main.js') }}"></script>

Я делаю что-то не так, но я нахожусь в потеря ... Кто-нибудь видел эту проблему раньше?

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Относительно Laravel примеров включенных библиотек в файле boostrap.js, таких как pusher, axios, et c ...

Вы можете использовать

window.ClassicEditor = require('@ckeditor/ckeditor5-build-classic');

$(document).ready(function(){
  ClassicEditor.create($('#edit_about_text').get()[0]);
});
0 голосов
/ 15 февраля 2020

Довольно простое решение, на которое документация не ссылается, но вам нужно присвоить значение require() для ClassicEditor:

var ClassicEditor = require('@ckeditor/ckeditor5-build-classic');

Это позволяет правильно ссылаться в коде.

...