2017-02-07 17 views
1

ASP .NET Rest APIからNSWAGを使用してjavascriptクライアントを生成しました。しかし、私はAPIメソッドを呼び出そうとしているときにいくつかのエラーを見つけています。未定義のプロパティ 'baseUrl'を設定できません

原因のエラーは次のとおりです。TypeError:未定義の 'baseUrl'プロパティを設定できません。私の角度コードで

var AuthClient = (function() { 
    function AuthClient($http, baseUrl) { 
     this.baseUrl = undefined; 
     this.http = null; 
     this.jsonParseReviver = undefined; 
     this.http = $http; 
     this.baseUrl = baseUrl !== undefined ? baseUrl : ""; 
    }; 
    AuthClient.prototype.login = function (auth) { 
     var _this = this; 
     var url_ = this.baseUrl + "/api/v1/auth/login"; 
     var content_ = JSON.stringify(auth ? auth.toJS() : null); 
     return this.http({ 
      url: url_, 
      method: "POST", 
      data: content_, 
      transformResponse: [], 
      headers: { 
       "Content-Type": "application/json; charset=UTF-8", 
       "Accept": "application/json; charset=UTF-8" 
      } 
     }).then(function (response) { 
      return _this.processLogin(response); 
     }, function (response) { 
      if (response.status) 
       return _this.processLogin(response); 
      throw response; 
     }); 
    }; 
...}()); 
exports.AuthClient = AuthClient; 

私がやっている:

var client = AuthClient('http://localhost:14959/'); 
    var call = client.prototype.login(data); 

を私はすでにアプリケーションをデバッグしている、それが機能AuthClientに入り、私はまた、これまでそれを変更しようとしましたが、問題が解決しません:

function AuthClient($http, baseUrl) { 
    this.baseUrl = baseUrl; 
}; 

また、私はこのエラーを取得しています:Uncaught ReferenceError: exports is not definedそれはそれでか何かを持っている場合、私は知りません。単に無視しない場合。

エラートレース:この行は必要ありません

TypeError: Cannot set property 'baseUrl' of undefined 
    at AuthClient (RenterLogApiBackendClient.js:19) 
    at b.$scope.login (HomeController.js:16) 
    at fn (eval at compile (angular.min.js:1), <anonymous>:4:206) 
    at b (angular.js:16123) 
    at e (angular.js:26490) 
    at b.$eval (angular.js:17913) 
    at b.$apply (angular.js:18013) 
    at HTMLFormElement.<anonymous> (angular.js:26495) 
    at HTMLFormElement.dispatch (jquery-3.1.1.min.js:3) 
    at HTMLFormElement.q.handle (jquery-3.1.1.min.js:3) 

答えて

1

、あなたが実際にあなたのコンストラクタを返す必要があり、その後、newを使用してそれを呼び出す:

var AuthClient = (function() { 
    // ... 

    return AuthClient; 
}()); 

var client = new AuthClient('http://localhost:14959/'); 

おそらくexportsラインを省略することができます。

0

this.baseUrl = baseUrl !== undefined ? baseUrl : ""; 
これを行うには

最良の方法があるに:

this.baseUrl = undefined; 

あなたは再びこれを持っている場合

this.baseUrl = '' || this.baseUrl; 

AuthClientには2つのパラメータがあり、そのうちの2番目のパラメータはbaseUrlです。しかし、それを設定するときは、1つのパラメータしか使用していません。

その中に別の関数を定義して、そのパラメータを使用します。あなたのAuthClient関数の内部

+0

私が言ったように、私はこれだけを試みました:function AuthClient($ http、baseUrl){ this.baseUrl = baseUrl; };同じエラーが発生しました –

+0

提案は後方にあります。 'this.baseUrl = baseUrl ||でなければなりません。 ";"。 – mc10

+0

@RuiQueirósはい、それは 'AuthClient'に2つのパラメータがあるからです。代わりに、 'AuthClient'の中に' baseUrl'をパラメータとして持つ別のメソッドを定義してください。 ANdは 'post'コールのためにそのメソッドを呼び出します –

関連する問題