Javascript code
async function processMission(fromWhere, character) {
const actions = [];
const characterData = character.getCharacterData();
const mission = await Mission.findMissionById(
characterData.currentMission.id
);
const stage = mission.getStageByNumber(
character.getData("currentMission.stage")
);
if (stage.actions) {
for (const action of stage.actions) {
const result = engine.run(action, {
evaluate: { fromWhere: fromWhere, characterData: characterData },
});
if (result) {
if (Array.isArray(result)) {
for (const r of result) {
actions.push(r);
}
} else {
actions.push(result);
}
}
}
}
return actions;
}
Node crash output:
[dev:server] node:internal/process/promises:392
[dev:server] new UnhandledPromiseRejection(reason);
[dev:server] ^
[dev:server]
[dev:server] UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "#<Object>".
[dev:server] at throwUnhandledRejectionsMode (node:internal/process/promises:392:7)
[dev:server] at processPromiseRejections (node:internal/process/promises:475:17)
[dev:server] at process.processTicksAndRejections (node:internal/process/task_queues:105:32) {
[dev:server] code: 'ERR_UNHANDLED_REJECTION'
[dev:server] }
[dev:server]
[dev:server] Node.js v24.14.0
[dev:server] Command failed with exit code 1: /home/cory/.config/nvm/versions/node/v24.14.0/bin/node ./src/server.js
[dev:server] Waiting for the debugger to disconnect...
[dev:server] Waiting for the debugger to disconnect...
[dev:styles] Waiting for the debugger to disconnect...
ERROR: "dev:server" exited with 1.
Waiting for the debugger to disconnect...
[nodemon] app crashed - waiting for file changes before starting...
Example data fragments that can cause the crash:
This one is taken from thh YAML file that gets loaded
- if:
- and:
- "==":
- var: evaluate.fromWhere
- map
- "==":
- var: evaluate.characterData.currentMission.id
- 1
- "==":
- var: evaluate.characterData.currentMission.stage
- 1
- var:
- cmd: "set"
target: "character"
data:
- "currentMission.id"
- 1
- cmd: "set"
target: "character"
data:
- "currentMission.stage"
- 2
- cmd: "set"
target: "character"
data:
- "currentActivity"
- "location"
- cmd: "set"
target: "location"
data:
- 1
Here's a copy of data that caused the crash from an in memory object from VSCode just before the crash. (Yes, I know there's there's lots of , in there that aren't 'proper' JSON, but if you uses VSCode you know that's how it copy's values during debugging.)
{
if: [
{
and: [
{
"==": [
{
var: "evaluate.fromWhere",
},
"map",
],
},
{
"==": [
{
var: "evaluate.characterData.currentMission.id",
},
1,
],
},
{
"==": [
{
var: "evaluate.characterData.currentMission.stage",
},
1,
],
},
],
},
[
{
cmd: "set",
target: "character",
data: [
"currentMission.id",
1,
],
},
{
cmd: "set",
target: "character",
data: [
"currentMission.stage",
2,
],
},
{
cmd: "set",
target: "character",
data: [
"currentActivity",
"location",
],
},
{
cmd: "set",
target: "location",
data: [
1,
],
},
],
],
}
Version of the data that works without a crash:
actions:
- if:
- and:
- "==":
- var: evaluate.fromWhere
- map
- "==":
- var: evaluate.characterData.currentMission.id
- 1
- "==":
- var: evaluate.characterData.currentMission.stage
- 1
- [
"set character currentMission.id 1",
"set character currentMission.stage 2",
"set location 1",
"set character currentActivity \"location\""
]
Javascript code
Node crash output:
Example data fragments that can cause the crash:
This one is taken from thh YAML file that gets loaded
Here's a copy of data that caused the crash from an in memory object from VSCode just before the crash. (Yes, I know there's there's lots of , in there that aren't 'proper' JSON, but if you uses VSCode you know that's how it copy's values during debugging.)
Version of the data that works without a crash: