Describe the issue/error/question
I am using the following external module RDP Crystal EDI Library in a isolated code node to parse EDI transaction data. I am able to run this code locally, outside of n8n, successfully. When trying to run this code from a Desktop instance of a n8n code module I run into the error below. The validator.validate function from this library throws this error. I am able to use other functions from this library. The following is a link to the rules file used in the code.
What is the error message (if any)?
TypeError: Cannot read properties of undefined (reading 'split')
at ExecutionError.populateFromStack (/Applications/n8n.app/Contents/Resources/app/node_modules/n8n-nodes-base/dist/nodes/Code/ExecutionError.js:20:38)
at new ExecutionError (/Applications/n8n.app/Contents/Resources/app/node_modules/n8n-nodes-base/dist/nodes/Code/ExecutionError.js:17:14)
at Sandbox.runCodeAllItems (/Applications/n8n.app/Contents/Resources/app/node_modules/n8n-nodes-base/dist/nodes/Code/Sandbox.js:60:19)
at async Object.execute (/Applications/n8n.app/Contents/Resources/app/node_modules/n8n-nodes-base/dist/nodes/Code/Code.node.js:74:25)
at async Workflow.runNode (/Applications/n8n.app/Contents/Resources/app/node_modules/n8n-workflow/dist/src/Workflow.js:645:28)
at async /Applications/n8n.app/Contents/Resources/app/node_modules/n8n-core/dist/src/WorkflowExecute.js:562:53
Please share the workflow (Single code module)
const edi = require('rdpcrystal-edi-library');
const fs = require('fs');
//Load 5010 834 input file
const edi834input = "ISA*00*……….*01*SECRET….*ZZ*SUBMITTERS.ID..*ZZ*RECEIVERS.ID…*030101*1253*^*00501*000000905*1*T*:~\n"+
"GS*Hk*SENDER CODE*RECEIVERCODE*19991231*0802*1*X*005010X279A1~\n"+
"ST*271*1234*005010X279A1~\n"+
"BHT*0022*13*10001234*20060501*1319~\n"+
"HL*1**20*1~\n"+
"NM1*PR*2*ABC COMPANY*****PI*842610001~\n"+
"HL*2*1*21*1~\n"+
"NM1*1P*2*BONE AND JOINT CLINIC*****SV*2000035~\n"+
"HL*3*2*22*0~\n"+
"TRN*1*93175-012547*9877281234~\n"+
"NM1*IL*1*SMITH*ROBERT****MI*11122333301~\n"+
"DMG*D8*19430519~\n"+
"DTP*291*D8*20060501~\n"+
"EQ*30~\n"+
"SE*13*1234~\n"+
"GE*1*1~\n";
let validator = new edi.EDIValidator();
const validate = (ediInput) => {
//Create a validator instance
//Load a 5010 270 Validation Rules File
let validationRules = fs.readFileSync('/Users/don/Desktop/Rules_5010_834_005010X220A1.Rules').toString();
console.log(validationRules)
console.log(ediInput)
//Set the validation rules data
//Validation rules are found in the RDPCrystalInstallation\Validation Rules directory
validator.EDIRulesFileData = validationRules;
validator.EDIDataString = ediInput;
validator.validate();
//Get the EDI document loaded into memory
let loadedEDIFile = validator.EDILightWeightDocument;
console.log("Validation Errors count: ", validator.Errors.Count);
//Get all errors from the EDI data
for (let i = 0; i < validator.Errors.Count; i++) {
let error = validator.Errors.getItem(i);
console.log(
{
Type: "Error",
Line: error.LineNumber,
Transaction: "",
SnipLevel: error.SnipLevel,
Message: error.Message,
Loop: error.Loop,
Segment: error.Segment,
Element: error.ElementOrdinal,
Composite: error.CompositeElementOrdinal,
Description: error.Description,
Ordinal: error.SegmentOrdinal
});
}
}
const splitEDIInput = (ediInput) => {
let original = ediInput;
//Create a new EDIFileSplitter
let splitter = new edi.EDIFileSplitter();
//Split the document at the ST header
splitter.FileSplitLevel = edi.FileSplitLevel.HEADER;
//Put 1 ST-SE loop in each file
splitter.NumberOfItemsPerFile = 1;
//Split the document
let splitDocs = splitter.split(original);
console.log("First Split Document");
console.log(splitDocs[0]);
}
splitEDIInput(edi834input);
validate(edi834input);
return null;
Information on your n8n setup
- n8n version: 1.7.0
- Database you’re using (default: SQLite): SQLite
- Running n8n with the execution process [own(default), main]: own
- Running n8n via [Docker, npm, n8n.cloud, desktop app]: desktop app