From c4bf22fb9eeaf2a3b79e15f53001494aaf24da72 Mon Sep 17 00:00:00 2001 From: Alex Dima Date: Tue, 30 Jan 2018 10:25:05 +0100 Subject: [PATCH] Fixes #42393 --- src/cli.js | 24 ++++++++++++++++ .../electron-browser/issue/issueReporter.js | 28 +++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/src/cli.js b/src/cli.js index d63ebfae0450b..a73ad05e861e0 100644 --- a/src/cli.js +++ b/src/cli.js @@ -3,4 +3,28 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +//#region Add support for using node_modules.asar +(function () { + const path = require('path'); + const Module = require('module'); + const NODE_MODULES_PATH = path.join(__dirname, '../node_modules'); + const NODE_MODULES_ASAR_PATH = NODE_MODULES_PATH + '.asar'; + + const originalResolveLookupPaths = Module._resolveLookupPaths; + Module._resolveLookupPaths = function (request, parent) { + const result = originalResolveLookupPaths(request, parent); + + const paths = result[1]; + for (let i = 0, len = paths.length; i < len; i++) { + if (paths[i] === NODE_MODULES_PATH) { + paths.splice(i, 0, NODE_MODULES_ASAR_PATH); + break; + } + } + + return result; + }; +})(); +//#endregion + require('./bootstrap-amd').bootstrap('vs/code/node/cli'); \ No newline at end of file diff --git a/src/vs/code/electron-browser/issue/issueReporter.js b/src/vs/code/electron-browser/issue/issueReporter.js index 06cbab83f42b5..07e8b8663d747 100644 --- a/src/vs/code/electron-browser/issue/issueReporter.js +++ b/src/vs/code/electron-browser/issue/issueReporter.js @@ -53,6 +53,34 @@ function main() { const args = parseURLQueryArgs(); const configuration = JSON.parse(args['config'] || '{}') || {}; + //#region Add support for using node_modules.asar + (function () { + const path = require('path'); + const Module = require('module'); + let NODE_MODULES_PATH = path.join(configuration.appRoot, 'node_modules'); + if (/[a-z]\:/.test(NODE_MODULES_PATH)) { + // Make drive letter uppercase + NODE_MODULES_PATH = NODE_MODULES_PATH.charAt(0).toUpperCase() + NODE_MODULES_PATH.substr(1); + } + const NODE_MODULES_ASAR_PATH = NODE_MODULES_PATH + '.asar'; + + const originalResolveLookupPaths = Module._resolveLookupPaths; + Module._resolveLookupPaths = function (request, parent) { + const result = originalResolveLookupPaths(request, parent); + + const paths = result[1]; + for (let i = 0, len = paths.length; i < len; i++) { + if (paths[i] === NODE_MODULES_PATH) { + paths.splice(i, 0, NODE_MODULES_ASAR_PATH); + break; + } + } + + return result; + }; + })(); + //#endregion + const extractKey = function (e) { return [ e.ctrlKey ? 'ctrl-' : '',