Skip to content

Webpack stats error messages not printing problematic source filename #9023

Open
@slorber

Description

@slorber

Have you read the Contributing Guidelines on issues?

Prerequisites

  • I'm using the latest version of Docusaurus.
  • I have tried the npm run clear or yarn clear command.
  • I have tried rm -rf node_modules yarn.lock package-lock.json and re-installing packages.
  • I have tried creating a repro with https://new.docusaurus.io.
  • I have read the console error message carefully (if applicable).

Description

The code to print console error messages is quite bad:

import formatWebpackMessages from 'react-dev-utils/formatWebpackMessages';

export function formatStatsErrorMessage(
  statsJson: ReturnType<webpack.Stats['toJson']> | undefined,
): string | undefined {
  if (statsJson?.errors?.length) {
    const {errors} = formatWebpackMessages(statsJson);
    return errors
      .map((str) => logger.red(str))
      .join(`\n\n${logger.yellow('--------------------------')}\n\n`);
  }
  return undefined;
}

'react-dev-utils/formatWebpackMessages' does not print all the relevant info, notably the file path that on which the error happens, and this prevents users from solving their problems.

Example #9022

Reproducible demo

No response

Steps to reproduce

  • init new site
  • add src/thing.xyz
  • add import './thing.xyz' on src/index.tsx

Console error:

CleanShot 2023-05-30 at 16 39 41@2x

However, the Dev Server error overlay works better:

CleanShot 2023-05-30 at 16 40 05

Expected behavior

We should print relevant information to the console. At least the file path.

This info is definitively available in the Webpack stats:

const stats = {
  errors: [
    {
      moduleIdentifier: '/Users/sebastienlorber/Desktop/website/src/pages/thing.xyz',
      moduleName: './src/pages/thing.xyz',
      loc: '1:0',
      message: "Module parse failed: Unexpected character '🔥' (1:0)\n" +
        'You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n' +
        '> 🔥 bad file content'
    }
  ],
  errorsCount: 1,
  warnings: [],
  warningsCount: 0
}

Actual behavior

Error message does not contain the problematic file path

Your environment

  • Docusaurus version used: v2.4.1 or v3 canary

Self-service

  • I'd be willing to fix this bug myself.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugAn error in the Docusaurus core causing instability or issues with its executiondomain: dxRelated to developer experience of working on Docusaurus sites

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions