admin管理员组

文章数量:1415139

I have generated a javascript client using NSWAG from a ASP .NET Rest API. But I am finding a few errors when I am trying to call an API method.

The error in cause is: TypeError: Cannot set property 'baseUrl' of undefined.

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;

In my angular code I am doing:

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

I have already debugged the application and it enters the function AuthClient and I have also tried to change it to this, but the problem persists:

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

I am also getting this error: Uncaught ReferenceError: exports is not defined I don't know if it has something to do with it or not. If not just ignore.

Error trace:

TypeError: Cannot set property 'baseUrl' of undefined
    at AuthClient (RenterLogApiBackendClient.js:19)
    at b.$scope.login (HomeController.js:16)
    at fn (eval at pile (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)

I have generated a javascript client using NSWAG from a ASP .NET Rest API. But I am finding a few errors when I am trying to call an API method.

The error in cause is: TypeError: Cannot set property 'baseUrl' of undefined.

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;

In my angular code I am doing:

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

I have already debugged the application and it enters the function AuthClient and I have also tried to change it to this, but the problem persists:

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

I am also getting this error: Uncaught ReferenceError: exports is not defined I don't know if it has something to do with it or not. If not just ignore.

Error trace:

TypeError: Cannot set property 'baseUrl' of undefined
    at AuthClient (RenterLogApiBackendClient.js:19)
    at b.$scope.login (HomeController.js:16)
    at fn (eval at pile (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)
Share Improve this question edited Feb 7, 2017 at 18:41 Rui Queirós asked Feb 7, 2017 at 18:25 Rui QueirósRui Queirós 1251 silver badge8 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 2

Inside your AuthClient function, you need to actually return your constructor, and then call it using new:

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

    return AuthClient;
}());

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

You can probably omit the exports line.

This line is not required:

this.baseUrl = undefined;

If you again have this:

this.baseUrl = baseUrl !== undefined ? baseUrl : "";

Best way to do this is to:

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

And in AuthClient you have two parameters, out of which the second parameter is baseUrl. But when you are setting it, you are using only one parameter.

So define another function inside that and then use the parameter.

本文标签: javascriptCannot set property 39baseUrl39 of undefinedStack Overflow