2

durandal アプリを構築するために gulp-durandal を使用しています。ノックアウトする依存関係を持つ最初のモジュールで失敗します。

define(['ノックアウト',....

[09:35:27] デュランダル エラー: 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',

app フォルダーの直下でモジュールを解決しようとする代わりに、gulp-durandal が構成パスを使用するようにするにはどうすればよいですか? 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 に答える