ОБНОВЛЕНИЕ
В соответствии с комментарием @jcastroa87 я добавил ckeditor-init.js в описание и обновил ckeditor.js, чтобы лучше отражать то, что на самом деле находится в мой проект. Я также объяснил, как была создана сборка CKEditor.
Я пытаюсь добавить собственный CKEditor5 в поле ckeditor в моей настройкеCreateOperation() в laravel Backpack. Я следую руководству в документации. Здесь я создаю пользовательскую сборку CKEditor. В процессе создания выберите предустановку HTMLEditor на этапе настройки, удалите все плагины премиум-класса на этапе функций, оставьте все по умолчанию на этапе панели инструментов и выберите технологию -> vanillajs, метод интеграции -> самостоятельный хостинг (npm), вывод -> скачать проект. Файл ckeditor.js — это файл main.js из загруженного проекта.
При использовании этой сборки CKEditor для моих custom_builds в поле ckefitor я получаю следующую ошибку в консоли javascript. : Uncaught SyntaxError: невозможно использовать оператор импорта вне модуля.
Насколько я могу сделать вывод, проблема связана с тем фактом, что код javascript, который генерирует CKEditor Builder, включает несколько операторов импорта для плагины:
async function bpFieldInitCustomCkeditorElement(element) {
// To create CKEditor 5 classic editor
let ckeditorInstance = await ClassicEditor.create(element[0], editorConfig).catch(error => {
console.error( error );
});
if (!ckeditorInstance) return;
element.on('CrudField:delete', function (e) {
ckeditorInstance.destroy();
});
// trigger the change event on textarea when ckeditor changes
ckeditorInstance.editing.view.document.on('layoutChanged', function (e) {
element.trigger('change');
});
element.on('CrudField:disable', function (e) {
ckeditorInstance.enableReadOnlyMode('CrudField');
});
element.on('CrudField:enable', function (e) {
ckeditorInstance.disableReadOnlyMode('CrudField');
});
}
При добавлении двух файлов в параметр custom_build для поля ckeditor это поле вызывает директивы @basset(public_path('assets/js/ckeditor/ckeditor.js'))< /code> и @basset(public_path('assets/js/ckeditor/ckeditor-init.js')) в колонке поля ckeditor. Затем директива определяет, что это файлы javascript, и добавляет на страницу следующие скрипты:
Однако в этом скрипте нет type='module', поэтому возникает ошибка.
Для справки я использую CKEditor5 версии 43.1.0 (устанавливается через npm), рюкзак/crud версии 6.7.38 и рюкзак/про 2.2.17
Кто-нибудь знает, есть ли способ принудительно использовать type="module" в скрипте тег без манипуляций с исходными файлами рюкзака laravel?
[b]ОБНОВЛЕНИЕ[/b] В соответствии с комментарием @jcastroa87 я добавил ckeditor-init.js в описание и обновил ckeditor.js, чтобы лучше отражать то, что на самом деле находится в мой проект. Я также объяснил, как была создана сборка CKEditor. Я пытаюсь добавить собственный CKEditor5 в поле ckeditor в моей настройкеCreateOperation() в laravel Backpack. Я следую руководству в документации. Здесь я создаю пользовательскую сборку CKEditor. В процессе создания выберите предустановку HTMLEditor на этапе настройки, удалите все плагины премиум-класса на этапе функций, оставьте все по умолчанию на этапе панели инструментов и выберите технологию -> vanillajs, метод интеграции -> самостоятельный хостинг (npm), вывод -> скачать проект. Файл ckeditor.js — это файл main.js из загруженного проекта. При использовании этой сборки CKEditor для моих custom_builds в поле ckefitor я получаю следующую ошибку в консоли javascript. : Uncaught SyntaxError: невозможно использовать оператор импорта вне модуля. Насколько я могу сделать вывод, проблема связана с тем фактом, что код javascript, который генерирует CKEditor Builder, включает несколько операторов импорта для плагины: [code]import { ClassicEditor, AccessibilityHelp, Autoformat, AutoImage, AutoLink, Autosave, Base64UploadAdapter, Bold, Code, CodeBlock, Essentials, GeneralHtmlSupport, Heading, HtmlComment, HtmlEmbed, ImageBlock, ImageCaption, ImageInline, ImageInsert, ImageInsertViaUrl, ImageResize, ImageStyle, ImageTextAlternative, ImageToolbar, ImageUpload, Italic, Link, LinkImage, List, ListProperties, Markdown, MediaEmbed, Paragraph, SelectAll, ShowBlocks, SourceEditing, Table, TableCaption, TableCellProperties, TableColumnResize, TableProperties, TableToolbar, TextTransformation, Undo } from 'ckeditor5';
[/code] Файл ckeditor-init.js будет выглядеть так: [code]async function bpFieldInitCustomCkeditorElement(element) { // To create CKEditor 5 classic editor let ckeditorInstance = await ClassicEditor.create(element[0], editorConfig).catch(error => { console.error( error ); });
if (!ckeditorInstance) return;
element.on('CrudField:delete', function (e) { ckeditorInstance.destroy(); });
// trigger the change event on textarea when ckeditor changes ckeditorInstance.editing.view.document.on('layoutChanged', function (e) { element.trigger('change'); });
element.on('CrudField:disable', function (e) { ckeditorInstance.enableReadOnlyMode('CrudField'); });
element.on('CrudField:enable', function (e) { ckeditorInstance.disableReadOnlyMode('CrudField'); }); } [/code] При добавлении двух файлов в параметр custom_build для поля ckeditor это поле вызывает директивы @basset(public_path('assets/js/ckeditor/ckeditor.js'))< /code> и @basset(public_path('assets/js/ckeditor/ckeditor-init.js')) в колонке поля ckeditor. Затем директива определяет, что это файлы javascript, и добавляет на страницу следующие скрипты: [code]
[/code] Однако в этом скрипте нет type='module', поэтому возникает ошибка. Для справки я использую CKEditor5 версии 43.1.0 (устанавливается через npm), рюкзак/crud версии 6.7.38 и рюкзак/про 2.2.17 Кто-нибудь знает, есть ли способ принудительно использовать type="module" в скрипте тег без манипуляций с исходными файлами рюкзака laravel?