Node version: both 10.18.0 and 8.9.3
Sails version _(sails)_: 1.2.3
ORM hook version _(sails-hook-orm)_: ^2.1.1
Sockets hook version _(sails-hook-sockets)_: 2.0.0
Organics hook version _(sails-hook-organics)_: not in package-lock.json
Grunt hook version _(sails-hook-grunt)_: 4.0.1
Uploads hook version _(sails-hook-uploads)_: not in package-lock.json
DB adapter & version _(e.g. [email protected])_: using builtin NeDB
Skipper adapter & version _(e.g. [email protected])_: not in package-lock.json
Before posting this, I verified: moved the app.js to the toplevel folder and changed package.json:main to reflect such. No issues there. So:
My sails app is also an electron app. Electron-packager requires your entry point be in a subfolder. So I move app.js to a subfolder and update my package.json. With this, my sails app still works 100% if I do a sails lift, but if I do node . (which is how electron prefers to do things), I get the following results:
I've thrown try/catch blocks at everything in app.js, and made all the electron stuff conditional, but that has had no effect nor revealed any extra information.
My project is open source, so I have no problem sharing code/configs as necessary to troubleshoot.
I realize this is not the electron.js support site, but node . is supposed to work and it normally does until I move the entry point... am I just unaware of a config step or something?
Thanks for your time.
@NathanHawks Thanks for posting! We'll take a look as soon as possible.
In the mean time, there are a few ways you can help speed things along:
Please remember: never post in a public forum if you believe you've found a genuine security vulnerability. Instead, disclose it responsibly.
For help with questions about Sails, click here.
@johnabrams7 this is a bug unless your software is "working as intended" when its main entry point can't be run from a subfolder via node ..
I found the obvious workaround does work:
package.json).app/launcher.js. It only needs to contain one line: require('../app.js'); (presuming your "real" main entry script is app.js).package.json 's main node to point at app/launcher.jsI still consider this a bug and would be willing to follow troubleshooting instructions in order to get you the diagnostic data you need.
Hey, @NathanHawks! Glad you found a workaround. We were wondering if wrapping the whole Sails app in a subfolder might also solve this issue.
Short answer, yes, at least with a fresh app.
Steps taken:
mkdir subfolder; cd subfoldernpm init (with app/app.js as main entry point)mkdir app; cd appsails new . and chose Web AppNote: the command did not cleanly exit on its own.
info: Installing dependencies...
Press CTRL+C to cancel.
(to skip this step in the future, use --fast)
info: Created a new Sails app `app`!
(steps continued)
app.js:const request = require('request');
// electron config stuff
var backgroundColor = '#1A1A1A';
var width = 800, height = 600;
// get electron
const electron = require('electron');
// prime electron app
const app = electron.app;
// try to prevent multiple instances of the app running
app.requestSingleInstanceLock();
// electron window(s)
var mainWindow = null;
// when sails says it's lifted, wait a delay or else JS & CSS return 404's
var windowCreationDelay = 5000;
// sails app address
const appAddress = 'http://127.0.0.1';
const appPort = 1337;
// give sails time
setTimeout(() => {
try {
// create the browser window
if (app) {
const BrowserWindow = electron.BrowserWindow;
mainWindow = new BrowserWindow({show: false, width: width, height: height,
backgroundColor: backgroundColor
});
// hide menu bar where available
mainWindow.setMenuBarVisibility(false);
// maximize the window
mainWindow.maximize();
// go to the sails app
mainWindow.loadURL(`http://127.0.0.1:1337/`);
// show javascript & DOM consoles
mainWindow.webContents.openDevTools();
// show browser only when it's ready to render itself
mainWindow.once('ready-to-show', () => {
mainWindow.show();
});
// setup close function
mainWindow.on('closed', function() {
mainWindow = null;
});
}
}
catch (e) { console.error(e); }
}, windowCreationDelay);
// quit when all windows are closed
if (app) app.on('window-all-closed', function() {
if (process.platform !== 'darwin') {
sails.lower(() => {
app.exit();
});
}
})
// --------------------------------------------------------------
// insert sails-generated app code here
// --------------------------------------------------------------
cd ..; electron . -- confirmed boilerplate app worksdeps/devdeps/config from another project to package.jsonnpm installelectron-packager . testSubfolder --platform=win32 --arch=x64Note that the app subfolder now has its own node_modules folder. Project size on disk is currently 1.3 GB after structuring things this way. This includes the electron-packager build. Compare to 1.1 GB, the size of an actual project (also with an electron-packager build in tow).
(Apologies if there was any confusion ---- the title refers to running with node . but this was to simplify the question since it was a requirement of electron-packager)
It also works with node .