1

インターネット上のいくつかの例からコードを文字通りコピー/貼り付けして、自分の locomotive.js アプリケーションでテストを作成しようとしています。それでも、テストを実行するたびに、次のエラーが表示されます

TypeError: string is not a function

(locomotive.boot.length を使用して) locomotive.boot で期待される引数の数を確認すると、2 と表示されます...しかし、オンラインのすべての例で (先に進んで、Google で検索してください)、ドキュメントには 3 と表示されているようです。私が間違っていることは何ですか?

これが私のコードです:

var locomotive = require('locomotive'),
    should = require('should'),
    request = require('supertest');
var app, server;

describe('Application', function() {
    before(function(done) {
        locomotive.boot( __dirname+"/..", "test", function(err, express) {
            if (err) throw err;
            app = this;
            express.listen(4000, '0.0.0.0', function() {
                var addr = this.address();
                console.log('Server started. [Env: '+SOPS.conf.get('app:environment')+'] [Addr: '+addr.address+'] [Port: '+addr.port+']');
                done();
            });
            server = express;
        });
    });
    it('should have started the app', function(){
        should.exist(app);
        should.exist(express);
    });
});
4

1 に答える 1

1

LocomotiveJS リポジトリには 2 つのブランチがあります )

バージョン 0.3.x を使用している場合、コードは機能するはずです。関数宣言は実際には 4 つの引数を示します: dir、env、options、callback。ここで関数定義を確認できます (Locomotive.prototype.boot): 0.3.x /lib/機関車/index.js

バージョン 0.4.x (ブランチ マスター) の時点で、ブート関数は 2 つの引数のみを受け入れます: env、callback このブランチの関数定義はここにあります (Application.prototype.boot): master/lib/application.js

したがって、コードは次のようになります。

locomotive.boot( "test", *yourcallback* );

お役に立てれば。

于 2014-04-10T10:27:13.273 に答える