Skip to content

Commit 9a58729

Browse files
authored
fix: Fixed webpack dep issue on remote vscode (#1025)
1 parent fbe7296 commit 9a58729

File tree

2 files changed

+23
-37
lines changed

2 files changed

+23
-37
lines changed

src/vscodeModules.ts

+23-36
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,42 @@
11
// Only this file is allowed to import VSCode modules
22
// tslint:disable: import-blacklist
33

4-
import * as path from "path";
5-
import * as vscode from "vscode";
4+
import { env, window } from "vscode";
65

7-
const appRoot = vscode.env.appRoot;
6+
declare const __webpack_require__: typeof require;
7+
declare const __non_webpack_require__: typeof require;
88

9-
function loadVSCodeModule(id: string) {
9+
function getNodeModule<T>(moduleName: string, showError = true): T | undefined {
10+
const r =
11+
typeof __webpack_require__ === "function"
12+
? __non_webpack_require__
13+
: require;
1014
try {
11-
return require(`${appRoot}/node_modules.asar/${id}`);
12-
} catch (ea) {
13-
// Ignore
15+
return r(`${env.appRoot}/node_modules.asar/${moduleName}`);
16+
} catch (err) {
17+
// Not in ASAR.
1418
}
15-
16-
const baseDir = path.dirname(process.execPath);
17-
try {
18-
module.paths.unshift(`${baseDir}/node_modules`);
19-
return require(id);
20-
} catch (eb) {
21-
vscode.window.showErrorMessage(
22-
`Missing dependency, go to "${baseDir}" and run: npm install ${id}`
23-
);
24-
}
25-
}
26-
27-
function getNodeModule(moduleName: string) {
2819
try {
29-
return require(`${appRoot}/node_modules.asar/${moduleName}`);
30-
} catch (error) {
31-
//Ignore
20+
return r(`${env.appRoot}/node_modules/${moduleName}`);
21+
} catch (err) {
22+
if (showError) {
23+
window.showErrorMessage(`Missing dependency: ${moduleName}`);
24+
}
3225
}
33-
34-
const baseDir = path.dirname(process.execPath);
35-
36-
try {
37-
module.paths.unshift(`${baseDir}/node_modules`);
38-
return require(moduleName);
39-
} catch (error) {}
40-
4126
return undefined;
4227
}
4328

29+
export const keytar = getNodeModule("keytar") as typeof import("keytar");
30+
4431
let iconv_lite = getNodeModule(
45-
"iconv-lite-umd"
32+
"iconv-lite-umd",
33+
false
4634
) as typeof import("iconv-lite-umd");
4735
if (!iconv_lite) {
48-
iconv_lite = loadVSCodeModule("iconv-lite") as typeof import("iconv-lite");
36+
iconv_lite = getNodeModule("iconv-lite") as typeof import("iconv-lite");
4937
}
50-
5138
export const iconv = iconv_lite;
52-
export const jschardet = loadVSCodeModule(
39+
40+
export const jschardet = getNodeModule(
5341
"jschardet"
5442
) as typeof import("jschardet");
55-
export const keytar = loadVSCodeModule("keytar") as typeof import("keytar");

webpack.config.js

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ const config = {
2727
extensions: ['.ts', '.js']
2828
},
2929
module: {
30-
noParse: /vscodeModules/,
3130
rules: [
3231
{
3332
test: /\.ts$/,

0 commit comments

Comments
 (0)