Skip to content

Commit d098468

Browse files
authoredFeb 10, 2022
Add diagnostic for failed autoinstall of node polyfill (#7682)
1 parent 65ffb58 commit d098468

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed
 

‎packages/utils/node-resolver-core/src/NodeResolver.js

+27-1
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ export default class NodeResolver {
290290
291291
// Auto install node builtin polyfills if not already available
292292
if (resolved === undefined && builtin != null) {
293+
let packageName = builtin.split('/')[0];
293294
let packageManager = this.packageManager;
294295
if (packageManager) {
295296
this.logger?.warn({
@@ -312,7 +313,7 @@ export default class NodeResolver {
312313
'https://parceljs.org/features/node-emulation/#polyfilling-%26-excluding-builtin-node-modules',
313314
});
314315
315-
await packageManager.resolve(builtin, this.projectRoot + '/index', {
316+
await packageManager.resolve(packageName, this.projectRoot + '/index', {
316317
saveDev: true,
317318
shouldAutoInstall: true,
318319
});
@@ -323,6 +324,31 @@ export default class NodeResolver {
323324
} catch (err) {
324325
// ignore
325326
}
327+
} else {
328+
throw new ThrowableDiagnostic({
329+
diagnostic: {
330+
message: md`Node builtin polyfill "${packageName}" is not installed, but auto install is disabled.`,
331+
codeFrames: [
332+
{
333+
filePath: ctx.loc?.filePath ?? sourceFile,
334+
codeHighlights: ctx.loc
335+
? [
336+
{
337+
message: 'used here',
338+
start: ctx.loc.start,
339+
end: ctx.loc.end,
340+
},
341+
]
342+
: [],
343+
},
344+
],
345+
documentationURL:
346+
'https://parceljs.org/features/node-emulation/#polyfilling-%26-excluding-builtin-node-modules',
347+
hints: [
348+
md`Install the "${packageName}" package with your package manager, and run Parcel again.`,
349+
],
350+
},
351+
});
326352
}
327353
}
328354

0 commit comments

Comments
 (0)
Please sign in to comment.