GlideController functionality in Scoped app

Daniel Peel
Mega Sage

Currently I have an error function in a script include... I'm using in global and I want to move this process into a scoped application... I'm using GlideController to take a passed status value 430, 431 etc and use it to lookup a constant.  This works fine... but how can I do this in a scoped app... the GlideScopedEvaluator() doesn't seem to work the same way.

 

Thanks

//this are constants at the top the SI
ERROR430/*old 415*/ = 'The following required fields are missing: ';
ERROR431/*old 416*/ = 'The following field has an incorrect value: ';
ERROR432/*old 417*/ = 'The following record was not found: ';
ERROR433/*old 419*/ = 'The following error occurred: ';


//this is the function that is called and uses those for standard output.
_errorHandle: function(status,messageAddOn,calledFunction){

var message = '';
var getErrorMessage = GlideController;
var errorConstant = 'ERROR' + status;
var errorMessageFound = getErrorMessage.evaluateString(errorConstant);

if (errorMessageFound){
message = errorMessageFound + messageAddOn;
}
else {
message = messageAddOn;
}
var cmxError = new sn_ws_err.ServiceError();
cmxError.setStatus(status);
cmxError.setMessage(message);
cmxError.setDetail("Failure in: " + calledFunction);
return cmxError;
},

 

15 REPLIES 15

var CMX_CommonAPI = Class.create();
CMX_CommonAPI.prototype = {
	STATIC_PROPERTIES: {
		ERROR430:'The following required fields are missing: ',
		ERROR431:'The following field has an incorrect value: ',
		ERROR432:'The following record was not found: ',
		ERROR433:'The following error occurred: ',

	},

	initialize: function() {
		ERROR_FOUND = '';
	},

	_errorHandle: function(status,messageAddOn,calledFunction){

		var message = '';
		//var getErrorMessage = GlideScopedEvaluator;
		var errorConstant = 'ERROR' + status;
		var errorMessageFound = this.STATIC_PROPERTIES[errorConstant];

		if (errorMessageFound){
			message = errorMessageFound + messageAddOn;
		}
		else {
			message = messageAddOn;
		}
		var cmxError = new sn_ws_err.ServiceError();
		cmxError.setStatus(status);
		cmxError.setMessage(message);
		cmxError.setDetail("Failure in: " + calledFunction);
		return cmxError;
	},

 

This is what's returned from when that runs for me... in a scoped application rest api

 

{
"error": {
  "detail": "TypeError: Cannot read property \"ERROR430\" from undefined (sys_script_include.0f7861a4db1a2c50de4bc139139619c1.script; line 20)",
  "message": "Cannot read property \"ERROR430\" from undefined"
},
"status": "failure"
}

What I updated to using an array did work however

Must be something wrong in your code somewhere. Just called the script include from a Scripted REST API and this is what I got:

 {
    "error": {
        "detail": "Failure in: myFunction",
        "message": "The following required fields are missing: my_field"
    },
    "status": "failure"
}

that's interesting, 🙂 it's a direct copy/paste

find_real_file.png

 

 

Unexplainable. I would just double check that you had everything saved and any other code that could be interfering because it's working perfectly on my instance and this is standard Javascript, no special ServiceNow stuff going on here.