asar icon indicating copy to clipboard operation
asar copied to clipboard

(Windows Only) Cannot recognized `\\?\` prefix in unpacked path

Open codehz opened this issue 8 years ago • 14 comments

ELECTRON_ASAR.js:158 Uncaught Error: The specified module could not be found.
\\?\D:\x\desktop\VizMusicPlayer\dist\win\Viz Music Player-win32-x64\resources\app.asar.unpacked\node_modules\sharp\build\Release\sharp.node

detail info: https://github.com/electron-userland/electron-packager/issues/424

codehz avatar Jul 13 '16 16:07 codehz

I am having a similar issue I just compiled the hello from node nan and required it from an Asar and got the same error. I added asar.unpacked on *.node or let the .node in the packed file and got the behaviour.

I also only got this behaviour on some windows 7 machines, windows 8 and 10 worked even with the .node inside the asar.

I did an app without asar run trhough electron and I'm still getting the "?\PATH" not found so I don't think is an assar issue, it's maybe an electron or node issue

drFabio avatar Jul 27 '16 19:07 drFabio

Seems to be related https://github.com/nodejs/node/issues/2964

drFabio avatar Jul 27 '16 20:07 drFabio

+1

sujkh85 avatar Nov 28 '16 12:11 sujkh85

+1... any update ? thanks

fryck avatar Apr 28 '17 12:04 fryck

What is the current status of this? It seems to me that Node is modifying the path to prepend the //?/ prefix in order to trigger a Microsoft hack to support real long filenames. However, something in electron-asar doesn't understand/support this. I have no workaround to this.

grantcv1 avatar Sep 11 '17 12:09 grantcv1

Why the wontfix label? What's the workaround?

grantcv1 avatar Sep 11 '17 12:09 grantcv1

It is not a bug of asar after my 2 day digging. In my case, I use node-java.It throw flowing error:

Uncaught Error: %1 is not a valid Win32 application.
\\?\F:\tmp\test\win-ia32-unpacked\resources\app\node_modules\java\build\Release\nodejavabridge_bindings.node
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
    at Object.Module._extensions..node (module.js:598:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (F:\tmp\test\win-ia32-unpacked\resources\app\node_modules\java\lib\nodeJavaBridge.js:21:16)
    at Object.<anonymous> (F:\tmp\test\win-ia32-unpacked\resources\app\node_modules\java\lib\nodeJavaBridge.js:316:3)

I flow laggingreflex's idea. https://github.com/soldair/node-qrcode/issues/22 native module can not be load because it's dependences was missing. U can use dependencywalker to found out what denpendences was missing, and try to copy to path of entry or add to system path environment variable!

MichaelIT avatar Oct 20 '17 08:10 MichaelIT

I got this problem The specified module could not be found. I read a lot of issue and then remove the asar option. It worked....But Why this happened? Only on Windows

JackieLs avatar Oct 24 '17 10:10 JackieLs

@JackieLs how did you remove the asar ??

mridah avatar Nov 06 '17 04:11 mridah

@mridah Maybe my description is not very accurate.Just set it false.

module.exports = {
	appVersion: pkg.version,
	arch: ['x64'], // ia32, x64, armv7l, all
	asar: os.platform() !== 'win32', //when on win32 is false.default is true.
	dir: path.join(__dirname, '../app'),
	icon: path.join(__dirname, '../app/icons/icon'),
	ignore: /renderer/,
	out: path.join(__dirname, '../builds'),
	overwrite: true,
	platform: process.env.PLATFORM_TARGET,
}

JackieLs avatar Nov 06 '17 04:11 JackieLs

@JackieLs so I can use asar: false in module.exports. right ?

mridah avatar Nov 11 '17 06:11 mridah

the module.exports is just to export the config.You can set the config in any where.

JackieLs avatar Nov 19 '17 04:11 JackieLs

It is not a bug of asar after my 2 day digging. In my case, I use node-java.It throw flowing error:

Uncaught Error: %1 is not a valid Win32 application.
\\?\F:\tmp\test\win-ia32-unpacked\resources\app\node_modules\java\build\Release\nodejavabridge_bindings.node
    at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:173:20)
    at Object.Module._extensions..node (module.js:598:18)
    at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:173:20)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (F:\tmp\test\win-ia32-unpacked\resources\app\node_modules\java\lib\nodeJavaBridge.js:21:16)
    at Object.<anonymous> (F:\tmp\test\win-ia32-unpacked\resources\app\node_modules\java\lib\nodeJavaBridge.js:316:3)

I flow laggingreflex's idea. soldair/node-qrcode#22 native module can not be load because it's dependences was missing. U can use dependencywalker to found out what denpendences was missing, and try to copy to path of entry or add to system path environment variable!

I don't think this is a denpendency issue. this happens only when I bundle my app with asar option on.

zoubingwu avatar Dec 02 '19 10:12 zoubingwu