forge icon indicating copy to clipboard operation
forge copied to clipboard

[Windows] Strings with path parts replaced with undefined

Open jamesplease opened this issue 3 years ago • 5 comments

Pre-flight checklist

  • [X] I have read the contribution documentation for this project.
  • [X] I agree to follow the code of conduct that this project uses.
  • [X] I have searched the issue tracker for a bug that matches the one I want to file, without success.

Electron Forge version

6.0.0-beta.63

Electron version

19.0.1

Operating system

Windows 11 21H2

Last known working Electron Forge version

Unknown

Expected behavior

Strings with paths in them would not be replaced with undefined. That way, files could be read from the disk and used in the app.

Actual behavior

If a string does contain a path part that points to a file, the entire path aside from the filename is replaced with undefined. This is normally accomplished through things like __dirname, but the following example shows the behavior with an explicitly-defined string:

var path = 'C:\\Users\\example-user\\web\\example-project\\src\\some-path\\some-file.txt';
console.log(path);
// => "undefinedsome-file.txt"

I narrowed it down to the webpack-asset-relocator-loader plugin. Commenting out this plugin resolves the issue. However, I'm not sure the ramifications of this. Running the app locally and making a build seems to work...but maybe I'll run into issues later.

Steps to reproduce

  1. Create a new project using the Webpack template:
npx create-electron-app my-new-app --template=webpack
  1. Create an empty file at ./src/example/index.html

  2. Add this snippet to main.js:

const PROJECT_ROOT = process.cwd();
const ASSETS_PATH = path.join(PROJECT_ROOT, 'src', 'example');
const appFilePath = path.join(ASSETS_PATH, 'index.html');
console.log('appFilePath', appFilePath);
  1. Observe that the logged path is appFilePath undefinedindex.html.

Note: the path must point to a file that actually exists for the bug to present itself.

Additional information

No response

jamesplease avatar Jun 01 '22 16:06 jamesplease

I have the same issue. I can't use sqlite3 in preload.ts due to this bug. The interesting thing — on first run (with yarn start) it works ok but only breaks on fast refresh. Upgrading webpack-asset-relocator-loader to 1.7.2 didn't fix an issue

quolpr avatar Jun 28 '22 08:06 quolpr

I also tried https://github.com/electron-userland/electron-forge/issues/575#issuecomment-422877001 (I added sqlite3 to external dep) and https://github.com/vercel/webpack-asset-relocator-loader/issues/161 seems to be related, but it didn't help

quolpr avatar Jun 28 '22 08:06 quolpr

Here is the error on HMR happens (I am on macOS btw):

image

quolpr avatar Jun 28 '22 09:06 quolpr

I think that’s a different problem. Maybe try some of the ideas over in https://github.com/electron-userland/electron-forge/issues/2412

jamesplease avatar Jun 28 '22 12:06 jamesplease

@jamesplease oh you are right! Thanks

quolpr avatar Jun 29 '22 06:06 quolpr