Global variable troubles (Calling Variables Declared in Another Unit) in javascript
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Global variable troubles (Calling Variables Declared in Another Unit) in javascript
I have successfully used "//USEUNIT" method of calling functions and variables in the past. I am trying to use "module.exports" method and can not figure out how to make it work. Here is what I have -
The source unit:
//Patinet_Information var nameOfPatient; function patientStat(){ ... nameOfPatient = page.FindChild("idStr", "patientName", 10).contentText; ... } module.exports.nameOfPatient;
The destination unit:
var patientInfo = require("Patinet_Information"); function createPatient(){ ... let pName = page.FindChildByXPath("//input[@id='userName']");; pName.SetText(nameOfPatient); }
I have also tried
pName.SetText(patientInfo.nameOfPatient);
did not work ("nameOfPatient is undefined").
Thanks in advance for any help.
Dave
Solved! Go to Solution.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The first thing I see is that
module.exports.nameOfPatient;
should be
module.exports.nameOfPatient = nameOfPatient;
You have to specify what the export is referencing.
Thanks,
Carson
Click the Accept as Solution button if my answer has helped
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you. I will try that and report it when I get a chance.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi cunderw
This morning corrected and tried your suggestion. I also realized that I missed a few things as well, so here is what I did -
//Patinet_Information
var nameOfPatient;
function patientStat(){
...
nameOfPatient = page.FindChild("idStr", "patientName", 10).contentText;
...
}
//module.exports.patientStat = patientStat;
module.exports.nameOfPatient = nameOfPatient;
and ...
var Patinet_Information = require("Patinet_Information");
function createPatient(){
...
let pName = page.FindChildByXPath("//input[@id='userName']");;
pName.SetText(Patinet_Information.nameOfPatient);
}
I am still getting nameOfPatinet 'undefined'.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ah, I forgot the Javascript scope can be a little weird. You won't actually be able to reference that var directly without it being a const.
So you could approach it two different ways:
let fooString = "" function setFooString(){ fooString = "Test"; } function getFooString() { return fooString; } module.exports.setFooString = setFooString; module.exports.getFooString = getFooString;
// bar file let foo = require("foo"); function barFunction() { foo.setFooString(); ShowMessage(foo.getFooString()); }
Or you could do a const object like this:
// foo file const info = { fooString : "" } function setFooString(){ info.fooString = "Test"; } module.exports.setFooString = setFooString; module.exports.info = info;
// bar file let foo = require("foo"); function barFunction() { foo.setFooString(); ShowMessage(foo.info.fooString); }
I personally would prefer the second way because it's much easier to expand on what you're acceessing from the first unit.
Thanks,
Carson
Click the Accept as Solution button if my answer has helped
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Carson
Thank you very much for your help. I will have to take a close look at it, I am relatively new to Javascript, still learning. 🙂
Thank you for taking the time to explain.
