gulp-durandal TypeError:req.toUrl不是函数

时间:2014-11-05 06:49:16

标签: durandal gulp durandal-2.0 gulp-watch gulp-less

我试着在我的durandal项目中实施gulp作为Durandal gulp doc

的解释

main.js文件已成功构建,但在尝试单击将打开模式对话框的内容时,它将显示此错误(firefox):

TypeError: req.toUrl is not a function
url = req.toUrl(nonStripName),
main.js (line 48306, col 16)

这是我在gulpfile.js上的配置

var gulp        = require('gulp');
var durandal    = require('gulp-durandal');

gulp.task('default', function(cb)
{
    durandal({
            baseDir: 'public_html/app',
            main: 'main.js',
            output: 'main.js',
            almond: true,
            minify: false
        })
        .on('error', function(err) {
            console.error('error. ' + err);
        })
        .pipe(gulp.dest('public_html/build'))
        .on('end', cb);
});

我也遇到了这个答案https://stackoverflow.com/a/23329383/1889014

但我不确定这是否与我的问题有关。

有人可以帮助或指导我完成这件事吗?谢谢!

3 个答案:

答案 0 :(得分:3)

我也使用gulp,Durandal和模态对话框来解决这个问题。将getView函数添加到返回视图url的viewmodel中会修复它。

例如

function getView() {
    return "views/theView.html";
}

我确信必须有更好的方法来解决这个问题,但这似乎适用于我需要的几个地方。

答案 1 :(得分:1)

由于使用错误的大小写写视图名称,我遇到了此错误。例如。如果该文件名为myView.html,但您需要' MyView'。

答案 2 :(得分:0)

我没有使用gulp-durandal构建,因为它提供了非常奇怪的错误,而且requirejs直接工作得更好。我通过在requirejs构建配置中手动包含所有视图来修复此错误。

include: [
    'text!customWidgets/alertsSection/title.html', //custom
    'text!customWidgets/alertsSection/body.html', //custom

    'text!customWidgets/exclusions/body.html', //custom
    'text!customWidgets/exclusions/title.html', //custom

    'text!customWidgets/submit/body.html', //custom
    'text!customWidgets/submit/title.html', //custom
]

由于durandal的性质和动态加载视图,我的include中有更多文件...但我不想向所有人发送垃圾邮件:)