diff --git a/DEPS b/DEPS index 5958d694c318..14c96cda2cca 100644 --- a/DEPS +++ b/DEPS @@ -12,7 +12,7 @@ vars = { 'chromium_version': '84c40395c741fa24ccbd9fc2c5828e2e97472952', 'node_version': - '696d8fb66d6f65fc82869d390e0d2078970b1eb4', + 'a86a4a160dc520c61a602c949a32a1bc4c0fc633', 'boto_version': 'f7574aa6cc2c819430c1f05e9a1a1a666ef8169b', 'pyyaml_version': '3.12', diff --git a/lib/common/asar.js b/lib/common/asar.js index b2f21964fdea..f0977753d070 100644 --- a/lib/common/asar.js +++ b/lib/common/asar.js @@ -13,6 +13,9 @@ process.type !== 'renderer' const isAsarDisabled = () => process.noAsar || envNoAsar + const internalBinding = process.internalBinding + delete process.internalBinding + /** * @param {!Function} functionToCall * @param {!Array|undefined} args @@ -669,8 +672,8 @@ return files } - const { internalModuleReadJSON } = process.binding('fs') - process.binding('fs').internalModuleReadJSON = pathArgument => { + const { internalModuleReadJSON } = internalBinding('fs') + internalBinding('fs').internalModuleReadJSON = pathArgument => { const { isAsar, asarPath, filePath } = splitPath(pathArgument) if (!isAsar) return internalModuleReadJSON(pathArgument) @@ -694,8 +697,8 @@ return buffer.toString('utf8') } - const { internalModuleStat } = process.binding('fs') - process.binding('fs').internalModuleStat = pathArgument => { + const { internalModuleStat } = internalBinding('fs') + internalBinding('fs').internalModuleStat = pathArgument => { const { isAsar, asarPath, filePath } = splitPath(pathArgument) if (!isAsar) return internalModuleStat(pathArgument) diff --git a/spec/fixtures/api/electron-main-module/app.asar b/spec/fixtures/api/electron-main-module/app.asar new file mode 100644 index 000000000000..19b4bdb9a895 Binary files /dev/null and b/spec/fixtures/api/electron-main-module/app.asar differ diff --git a/spec/fixtures/api/electron-main-module/app/index.js b/spec/fixtures/api/electron-main-module/app/index.js new file mode 100644 index 000000000000..c56845bca42d --- /dev/null +++ b/spec/fixtures/api/electron-main-module/app/index.js @@ -0,0 +1,8 @@ +try { + require('some-module') +} catch (err) { + console.error(err) + process.exit(1) +} + +process.exit(0) diff --git a/spec/fixtures/api/electron-main-module/app/node_modules/some-module/main2.js b/spec/fixtures/api/electron-main-module/app/node_modules/some-module/main2.js new file mode 100644 index 000000000000..774b4e2041eb --- /dev/null +++ b/spec/fixtures/api/electron-main-module/app/node_modules/some-module/main2.js @@ -0,0 +1 @@ +// Nothing to do here diff --git a/spec/fixtures/api/electron-main-module/app/node_modules/some-module/package.json b/spec/fixtures/api/electron-main-module/app/node_modules/some-module/package.json new file mode 100644 index 000000000000..cf8d1202f373 --- /dev/null +++ b/spec/fixtures/api/electron-main-module/app/node_modules/some-module/package.json @@ -0,0 +1,4 @@ +{ + "name": "some-module", + "main": "./main2.js" +} \ No newline at end of file diff --git a/spec/node-spec.js b/spec/node-spec.js index 623ecacd2135..aa7b2dace92d 100644 --- a/spec/node-spec.js +++ b/spec/node-spec.js @@ -578,4 +578,9 @@ describe('node feature', () => { .that.is.a('string') .and.matches(/^\d+\.\d+\.\d+\.\d+$/) }) + + it('can find a module using a package.json main field', () => { + const result = ChildProcess.spawnSync(remote.process.execPath, [path.resolve(fixtures, 'api', 'electron-main-module', 'app.asar')]) + expect(result.status).to.equal(0) + }) })