Durandal&在捆绑时,require.js导致第三方脚本的路径出现问题

时间:2017-02-12 15:27:40

标签: requirejs durandal

这不是特定于脚本 - 我现在遇到了两个不同网页编辑器的相同问题(TinyMCE和现在的CKEditor)。

在我的bundleconfig.cs中,我有:

.Include("~/Scripts/ckeditor/ckeditor.js")

位于/ Scripts / ckeditor中,它在我的开发机器上的visual studio中工作正常。

当我将网站发布到本地开发服务器时,我在尝试将相关资源加载到该文件时立即收到错误:

GET http://example.com/config.js?t=H0CG 404 (Not Found)
GET http://example.com/skins/moono-lisa/editor.css?t=H0CG 
GET http://example.com/lang/en.js?t=H0CG 

正如您所看到的,它正在尝试从错误的位置加载脚本 - 它应该寻找http://example.com/Scripts/ckeditor/config.js等。

如何在加载这些文件时告诉Durandal / require.js在那里保留“Scripts / ckeditor”部分?

在几个不同的页面上需要脚本,因此我将其加载到捆绑包中。相反,我可以通过每个页面顶部的require.js加载它。这是更好的解决方案而不是在网站加载时加载吗?

1 个答案:

答案 0 :(得分:0)

通过编辑我的main.js文件来解决它:

requirejs.config({
    shim: {
        'ckeditor-jquery': {
            deps: ['jquery', 'ckeditor-core']
        }
    },
    paths: {
        'text': '../Scripts/text',
        'durandal': '../Scripts/durandal',
        'plugins': '../Scripts/durandal/plugins',
        'transitions': '../Scripts/durandal/transitions',
        'bootstrap': '../Scripts/bootstrap',
        'ckeditor-core': '../Scripts/ckeditor/ckeditor',
        'ckeditor-jquery':'../Scripts/ckeditor/adapters/jquery'

    }
});

然后在需要它的viewmodel中我有:

define(['durandal/app', 'services/datacontext', 'ckeditor-jquery'], function (app, dc, ckjq) {
    var vm = function () {
    etc...

我从bundleconfig.cs文件中删除了对ckeditor的任何引用。这样它只在需要时加载脚本。