-
-
Notifications
You must be signed in to change notification settings - Fork 11
Description
I have a simple node js application using a combination of static html files and api paths. I find that after I generate the executable, it works in the current directory that contains the source code but does not work when moved to another directory.
The error I get on loading 'https://localhost:3000' from a different directory is: Cannot GET /
The following is the server.js
// server.js
// Import required modules
const express = require('express');
const path = require('path');
// Create an Express application
const app = express();
app.use(express.static('public'))
// api calls
app.get('/api/test', (req, res) => {
res.send('test)
});
})
// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
The following is: config.js
{
"compilerOptions": {
"target": "es2022",
"lib": ["es2022"],
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
}
}
The following is: sea-config.json
{
"main": "server-out.js",
"output": "sea-prep.blob"
}
And the following are the commands I used to create the server executable
1 Build using esbuild
npm run build
3 create blob
node --experimental-sea-config sea-config.json
4 create copy of exe
cp $(command -v node) server
5 inject experimental node
npx postject server NODE_SEA_BLOB sea-prep.blob --sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2
When I run ./server from the created directory, it works. However, when I move the exe to a separate directory and run it, it gives the Cannot GET / error.
What am I doing wrong? Thanks