无法设置未定义的 属性 'baseUrl'
Cannot set property 'baseUrl' of undefined
我使用来自 ASP .NET Rest API 的 NSWAG 生成了一个 javascript 客户端。但是当我尝试调用 API 方法时发现了一些错误。
错误原因是:TypeError: Cannot set 属性 '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;
在我的 angular 代码中,我正在执行:
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)
不需要此行:
this.baseUrl = undefined;
如果你再次遇到这个:
this.baseUrl = baseUrl !== undefined ? baseUrl : "";
最好的方法是:
this.baseUrl = '' || this.baseUrl;
而在 AuthClient
中你有两个参数,其中第二个参数是 baseUrl
。但是当你设置它时,你只使用一个参数。
因此在其中定义另一个函数,然后使用参数。
在你的 AuthClient
函数中,你实际上需要 return 你的构造函数,然后使用 new
:
调用它
var AuthClient = (function () {
// ...
return AuthClient;
}());
var client = new AuthClient('http://localhost:14959/');
您可以省略 exports
行。
我使用来自 ASP .NET Rest API 的 NSWAG 生成了一个 javascript 客户端。但是当我尝试调用 API 方法时发现了一些错误。
错误原因是:TypeError: Cannot set 属性 '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;
在我的 angular 代码中,我正在执行:
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)
不需要此行:
this.baseUrl = undefined;
如果你再次遇到这个:
this.baseUrl = baseUrl !== undefined ? baseUrl : "";
最好的方法是:
this.baseUrl = '' || this.baseUrl;
而在 AuthClient
中你有两个参数,其中第二个参数是 baseUrl
。但是当你设置它时,你只使用一个参数。
因此在其中定义另一个函数,然后使用参数。
在你的 AuthClient
函数中,你实际上需要 return 你的构造函数,然后使用 new
:
var AuthClient = (function () {
// ...
return AuthClient;
}());
var client = new AuthClient('http://localhost:14959/');
您可以省略 exports
行。