From 9a58729acf6eadf73a70b51ec269bc3443314639 Mon Sep 17 00:00:00 2001 From: Christopher Date: Sun, 2 Aug 2020 18:02:20 +0100 Subject: [PATCH] fix: Fixed webpack dep issue on remote vscode (#1025) --- src/vscodeModules.ts | 59 +++++++++++++++++--------------------------- webpack.config.js | 1 - 2 files changed, 23 insertions(+), 37 deletions(-) diff --git a/src/vscodeModules.ts b/src/vscodeModules.ts index 5bb0e18f..944dd441 100644 --- a/src/vscodeModules.ts +++ b/src/vscodeModules.ts @@ -1,55 +1,42 @@ // Only this file is allowed to import VSCode modules // tslint:disable: import-blacklist -import * as path from "path"; -import * as vscode from "vscode"; +import { env, window } from "vscode"; -const appRoot = vscode.env.appRoot; +declare const __webpack_require__: typeof require; +declare const __non_webpack_require__: typeof require; -function loadVSCodeModule(id: string) { +function getNodeModule(moduleName: string, showError = true): T | undefined { + const r = + typeof __webpack_require__ === "function" + ? __non_webpack_require__ + : require; try { - return require(`${appRoot}/node_modules.asar/${id}`); - } catch (ea) { - // Ignore + return r(`${env.appRoot}/node_modules.asar/${moduleName}`); + } catch (err) { + // Not in ASAR. } - - const baseDir = path.dirname(process.execPath); - try { - module.paths.unshift(`${baseDir}/node_modules`); - return require(id); - } catch (eb) { - vscode.window.showErrorMessage( - `Missing dependency, go to "${baseDir}" and run: npm install ${id}` - ); - } -} - -function getNodeModule(moduleName: string) { try { - return require(`${appRoot}/node_modules.asar/${moduleName}`); - } catch (error) { - //Ignore + return r(`${env.appRoot}/node_modules/${moduleName}`); + } catch (err) { + if (showError) { + window.showErrorMessage(`Missing dependency: ${moduleName}`); + } } - - const baseDir = path.dirname(process.execPath); - - try { - module.paths.unshift(`${baseDir}/node_modules`); - return require(moduleName); - } catch (error) {} - return undefined; } +export const keytar = getNodeModule("keytar") as typeof import("keytar"); + let iconv_lite = getNodeModule( - "iconv-lite-umd" + "iconv-lite-umd", + false ) as typeof import("iconv-lite-umd"); if (!iconv_lite) { - iconv_lite = loadVSCodeModule("iconv-lite") as typeof import("iconv-lite"); + iconv_lite = getNodeModule("iconv-lite") as typeof import("iconv-lite"); } - export const iconv = iconv_lite; -export const jschardet = loadVSCodeModule( + +export const jschardet = getNodeModule( "jschardet" ) as typeof import("jschardet"); -export const keytar = loadVSCodeModule("keytar") as typeof import("keytar"); diff --git a/webpack.config.js b/webpack.config.js index c5218a39..96356354 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -27,7 +27,6 @@ const config = { extensions: ['.ts', '.js'] }, module: { - noParse: /vscodeModules/, rules: [ { test: /\.ts$/,