How to update the Odyssey Voyage II - Server (Airlock)

I tried to update the Odyssey Voyage II - Server (Airlock) to the latest version, when I “npm run launch”, I got the error message:
"…
[accounts] Error occurred when executing command: npm start
[accounts] Error: spawn cmd.exe ENOENT
[accounts] at ChildProcess._handle.onexit (node:internal/child_process:286:19)
[accounts] at onErrorNT (node:internal/child_process:484:16)
[accounts] at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
[accounts] npm start exited with code -4058
node:internal/process/promises:289
triggerUncaughtException(err, true /* fromPromise */);
^

[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 Array]”.] {
code: ‘ERR_UNHANDLED_REJECTION’
}

Node.js v20.5.0,
"

what should I do the next?

Hi there @xibaozhi0 ! I’m happy to take a look at this for you. I’ve just tried setting up the server code myself and haven’t encountered any problems. In the monolith directory, we should first run npm install; then npm run launch; and while that process is running, npm start in a third terminal. Could you walk me through the steps you took to try to launch the server, and when exactly the error occurs?

hello, I am very glad to receive the reply so rapid. actually I run “npm install” and run “npm start” first and “Server ready at http://localhost:4000/”,in localhost:4000, it does not have any data except id and actually doesn’t work. when I “npm run launch”, the
error message came. I use the nodejs.20.5.0 and windows 11, all packages version are latest. I want to know the
.npmrc file in monolith, why “engine-strict=true”? I deleted this file. Is the error message related with this?

Thanks for the additional details @xibaozhi0! Could you copy and paste all of the output from running npm run launch for me here? I am going to try it out on my Windows computer and see if I get the same result (I tested on Mac, and didn’t see any issue.)

thank you very much, now I solved the problems by using ‘child_process’ replace “concurrently” , the block code is as the following:"
const { exec } = require(‘child_process’);
const path = require(‘path’);

async function installService(command, name, cwd, prefixColor) {
return new Promise((resolve, reject) => {
const childProcess = exec(command, { cwd });

childProcess.stdout.on('data', data => {
  console.log(`[${name}] \x1b[${prefixColor}m${data.toString().trim()}\x1b[0m`);
});

childProcess.stderr.on('data', data => {
  console.error(`[${name}] \x1b[31m${data.toString().trim()}\x1b[0m`);
});

childProcess.on('close', code => {
  if (code !== 0) {
    reject(new Error(`[${name}] exited with code ${code}`));
  } else {
    resolve();
  }
});

});
}

async function main() {
try {
const accounts = installService(‘npm install’, ‘accounts’, path.resolve(__dirname, ‘…/…/services/accounts’), ‘blue’);
const listings = installService(‘npm install’, ‘listings’, path.resolve(__dirname, ‘…/…/services/listings’), ‘magenta’);
const bookings = installService(‘npm install’, ‘bookings’, path.resolve(__dirname, ‘…/…/services/bookings’), ‘green’);
const reviews = installService(‘npm install’, ‘reviews’, path.resolve(__dirname, ‘…/…/services/reviews’), ‘yellow’);

await Promise.all([accounts, listings, bookings, reviews]);

console.log('All services installed successfully.');

} catch (error) {
console.error(‘Error in installing dependencies’, error);
throw new Error(‘Cannot install dependencies.’);
}
}

main();
"