使用NPM& amp; CKEDITOR时,其路径路径不正确Laravel Mix

时间:2017-09-03 16:27:04

标签: laravel-5 npm ckeditor

当我尝试使用NPM将CKEDITOR包含到我的新Laravel 5.5项目中时,我在Chrome控制台中收到以下错误(使用laravel代客作为local.dev):

app.js:16991 GET https://local.dev/chart/config.js?t=H7HG 
app.js:16991 GET https://local.dev/chart/skins/moono-lisa/editor.css?t=H7HG 
app.js:16991 GET https://local.dev/chart/lang/en.js?t=H7HG 

我的Laravel Mix设置如下所示:

mix.js('resources/assets/js/app.js', 'public/js')
  .babel(['resources/assets/js/libraries/*.js'], 'public/js/vendor.js')
  .version();

我的CKEDITOR安装位于:

/vendor/ckeditor/ckeditor

我可以在网站加载时访问CKEDITOR实例。但是,如上所示,当我导航到https://local.dev/chart时,CKEDITOR现在会查找配置,皮肤和lang文件,其中/ chart附加到它的基路径。

我做了一些研究,发现了一些相关问题,并且能够成功地使用asset()更改base_path。可以找到相关的stackOverflow问题herehere

我想做的是通过NPM拉CKEDITOR,使用Laravel Mix来组合,版本和缩小我的脚本(一个用于供应商库,一个用于我的特定于应用程序的JS),然后输出这两个.js laravel app中这些目录的文件:

 /public/js/vendor.js
 /public/js/app.js

Laravel mix生成这两个文件,构建成功,所有其他库都可以很好地运行。然而,CKEDITOR丢失它的基本路径并抛出错误寻找皮肤/ langs / config.js - 任何想法我如何调整CKEDITOR的basePath指向供应商文件,以便它将停止扼杀这些错误并正常工作?

提前感谢您提供任何帮助!

3 个答案:

答案 0 :(得分:1)

对于那些和我有同样问题的人,我找到了一个并没有涉及修改CKEDITOR的工作:

使用Webpack复制所需的CKEDITOR文件:

.copy('node_modules/ckeditor/config.js', 'public/js/ckeditor/config.js')
.copy('node_modules/ckeditor/styles.js', 'public/js/ckeditor/styles.js')
.copy('node_modules/ckeditor/contents.css', 'public/js/ckeditor/contents.css')
.copyDirectory('node_modules/ckeditor/skins', 'public/js/ckeditor/skins')
.copyDirectory('node_modules/ckeditor/lang', 'public/js/ckeditor/lang')
.copyDirectory('node_modules/ckeditor/plugins', 'public/js/ckeditor/plugins')

然后,在页面正文中添加:

<script> var CKEDITOR_BASEPATH = '/js/ckeditor/'; </script>

这将允许CKEDITOR找到所需的文件。这对我来说有点难看,所以也许有更好的方法来做到这一点 - 如果有的话,请让我知道并回答这个答案。

答案 1 :(得分:1)

那个错误对我来说是错误的,但我更改了代码并且问题正在解决。 在编写代码 webpack.mix.js 之后, 只是: 在你的 app.js 或 bootstrap.js 中,在 require 或 import 之后, 写下这段代码:

CKEDITOR.basePath = '/admin/ckeditor/'

希望问题得到解决。 谢谢。

答案 2 :(得分:0)

由于我无法添加评论,所以只想提供一种替代方法

<script> var CKEDITOR_BASEPATH = '/js/ckeditor/'; </script>

在您的 app.js 中,您可以执行以下操作,而不是执行以下操作:

 window.CKEDITOR_BASEPATH = '/js/ckeditor/';