Laravel 5.6中NPM安装CKEditor5后无法找到的问题求助
Laravel 5.6 中 CKEditor5 无法引用的解决办法
我来帮你一步步排查并解决这个问题,咱们从最基础的环节开始检查:
1. 确保视图正确加载了编译后的JS文件
首先要确认你的视图模板里已经引入了编译后的app.js,而且必须放在CKEditor初始化代码的前面,因为要先加载CKEditor的资源才能调用它。
在你的blade视图里添加这行代码(通常放在</body>标签前):
<script src="{{ mix('js/app.js') }}"></script>
如果你的mix配置修改过输出路径,要对应调整mix('js/app.js')里的路径。
2. 检查app.js中的代码顺序与变量名
你在app.js里的CKEditor挂载代码位置很重要,要确保它在bootstrap加载之后,而且变量名要和视图里调用的一致。
建议把CKEditor的代码调整到Vue初始化之前,比如:
require('./bootstrap'); // 先引入并挂载CKEditor到window对象 window.ckeditor = require('@ckeditor/ckeditor5-build-classic'); window.Vue = require('vue'); // ...你的其他Vue代码
重点:视图里调用的时候要严格使用window.ckeditor(或者直接写ckeditor,因为挂载到window后全局可用),别写错变量名(比如写成CKEditor大写开头)。
3. 视图里的正确初始化方式
确保你是在DOM加载完成后再初始化CKEditor,不然可能找不到目标元素。比如:
假设你的视图里有一个textarea:
<textarea id="editor-content"></textarea> <script> // 等待DOM加载完成再初始化 document.addEventListener('DOMContentLoaded', function() { ckeditor.create(document.querySelector('#editor-content')) .catch(error => { console.error('CKEditor初始化失败:', error); }); }); </script>
如果是在Vue组件里使用,要在mounted钩子中初始化:
<template> <textarea ref="editor"></textarea> </template> <script> export default { mounted() { ckeditor.create(this.$refs.editor) .catch(error => console.error(error)); } } </script>
4. 重新安装依赖并重新编译
有时候npm依赖安装可能有缓存或者不完整的情况,咱们清空缓存重新来:
# 删除依赖目录和锁文件 rm -rf node_modules rm package-lock.json # 重新安装依赖 npm install # 重新编译资源 npm run dev
5. 检查webpack.mix.js配置
确保你的webpack.mix.js里正确配置了JS的编译入口和输出路径,默认的配置应该是这样的:
mix.js('resources/assets/js/app.js', 'public/js') .sass('resources/assets/sass/app.scss', 'public/css');
如果修改过这个配置,要保证编译后的app.js确实输出到了public/js目录下,这样视图里的mix('js/app.js')才能正确加载。
按照上面的步骤逐一排查,应该就能解决找不到CKEditor组件的问题啦!
内容的提问来源于stack exchange,提问作者Ahmed Nawaz Khan
相关产品推荐
相关产品推荐

