2

我正在使用 gulp-durandal 来构建我们的 durandal 应用程序。它在我们的第一个模块上失败了,该模块具有淘汰能力:

定义(['淘汰赛',....

[09:35:27] Durandal 错误:ENOENT,没有这样的文件或目录 'C:\xxxxx\app\knockout.js' 在模块树中:company/viewmodels/edit

at Object.fs.openSync (fs.js:438:18)

我已将淘汰赛定义为 config.js 中的补丁(标准 requirejs 方式),但似乎 gulp-durandal 无法解析来自 config.js 的路径?

“淘汰赛”:“../Scripts/lib/knockout/knockout-2.3.0”,

您如何让 gulp-durandal 使用我们的配置路径,而不是尝试直接在 app 文件夹下解析模块?我尝试使用 options.extraModules ,但这仅允许您添加模块路径,而不是模块的符号名称,因此这似乎不是正确的方法。

我的 durandaljs 应用程序的基本结构遵循我相信的标准准则,我在 App 文件夹下有一个 config.js 和 main.js。

我的 config.js:

define([], function() {
return {
    paths: {
        'text': '../Scripts/lib/require/text',
        'durandal': '../Scripts/durandal',
        'plugins': '../Scripts/durandal/plugins',   

我的 main.js

require(['config'], function(config) {
require.config(config);

require(['durandal/system', 'durandal/app', 'durandal/viewLocator', 'plugins/widget', 'custombindings'],
    function(system, app, viewLocator, widget) {
        ..... app code here.....

}

gulpfile.js:

var gulp = require('gulp');

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

require(['App/config'], function(config){
  console.log('loaded config');
});

gulp.task('durandal', function(){
durandal({
baseDir: 'app', //same as default, so not really required.
main: 'main.js', //same as default, so not really required.
output: 'main.js', //same as default, so not really required.
almond: true,
minify: true,
require:true
})
.pipe(gulp.dest('dir/to/save/the/output'));
});

我想问题是如何将我的 config.js 路径加载到 gulp 中以便正确解析路径?我试过了:

var gulp = require('gulp');

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

require(['App/config'], function(config){
  console.log('loaded config');
});

但似乎 require 只需要一个字符串作为输入(我猜是 gulp 中的 require 函数!= require.js 中的 require )

4

1 回答 1

0

我认为问题在于您的 gulp-durandal 任务需要配置来模仿 config.js 文件。如果您需要进一步的帮助,请从您的 gulp-durandal 任务中提供更多代码。

于 2015-03-05T15:27:12.693 回答