Skip to content

Commit 9c1c9ce

Browse files
authored
gracefully handle error when @types/node is not installed (#1422)
1 parent dc0fed2 commit 9c1c9ce

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

src/resolver-functions.ts

+24-17
Original file line numberDiff line numberDiff line change
@@ -137,23 +137,30 @@ export function createResolverFunctions(kwargs: {
137137
);
138138
if (typeDirectiveName === 'node' && !resolvedTypeReferenceDirective) {
139139
// Resolve @types/node relative to project first, then __dirname (copy logic from elsewhere / refactor into reusable function)
140-
const typesNodePackageJsonPath = require.resolve(
141-
'@types/node/package.json',
142-
{
143-
paths: [configFilePath ?? cwd, __dirname],
144-
}
145-
);
146-
const typeRoots = [resolve(typesNodePackageJsonPath, '../..')];
147-
({ resolvedTypeReferenceDirective } = ts.resolveTypeReferenceDirective(
148-
typeDirectiveName,
149-
containingFile,
150-
{
151-
...config.options,
152-
typeRoots,
153-
},
154-
serviceHost,
155-
redirectedReference
156-
));
140+
let typesNodePackageJsonPath: string | undefined;
141+
try {
142+
typesNodePackageJsonPath = require.resolve(
143+
'@types/node/package.json',
144+
{
145+
paths: [configFilePath ?? cwd, __dirname],
146+
}
147+
);
148+
} catch {} // gracefully do nothing when @types/node is not installed for any reason
149+
if (typesNodePackageJsonPath) {
150+
const typeRoots = [resolve(typesNodePackageJsonPath, '../..')];
151+
({
152+
resolvedTypeReferenceDirective,
153+
} = ts.resolveTypeReferenceDirective(
154+
typeDirectiveName,
155+
containingFile,
156+
{
157+
...config.options,
158+
typeRoots,
159+
},
160+
serviceHost,
161+
redirectedReference
162+
));
163+
}
157164
}
158165
if (resolvedTypeReferenceDirective) {
159166
fixupResolvedModule(resolvedTypeReferenceDirective);

0 commit comments

Comments
 (0)