Skip to content

Error [ERR_REQUIRE_ESM] for module to-valid-identifier since v61.1.3/v61.1.4 #1583

@mathewzile

Description

@mathewzile

Since adding package to-valid-identifier as a dependency in v61.1.3 and v61.1.4 (4349209), our CJS project could not run eslint anymore with the error ERR_REQUIRE_ESM.

Can be reproduced by creating a new CJS project, installing eslint and eslint-plugin-jsdoc then copying the config below.

Expected behavior

ESLint should run with CommonJS projects.

Actual behavior

ESLint throws error:

Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\MA20507358\Downloads\eslint-issue\node_modules\to-valid-identifier\index.js from C:\Users\MA20507358\Downloads\eslint-issue\node_modules\eslint-plugin-jsdoc\dist\rules\preferImportTag.cjs not supported.
Instead change the require of index.js in C:\Users\MA20507358\Downloads\eslint-issue\node_modules\eslint-plugin-jsdoc\dist\rules\preferImportTag.cjs to a dynamic import() which is available in all CommonJS modules.     
    at TracingChannel.traceSync (node:diagnostics_channel:315:14)
    at Object.<anonymous> (C:\Users\MA20507358\Downloads\eslint-issue\node_modules\eslint-plugin-jsdoc\dist\rules\preferImportTag.cjs:10:49)

ESLint Config

eslint.config.js

const eslint_js = require("@eslint/js");
const globals = require("globals");
const jsdoc = require("eslint-plugin-jsdoc");

module.exports = [
  // global ignores
  {
    ignores: ["dist/**", "node_modules/**", "eslint.config.js"],
  },
  // eslint recommended rules
  eslint_js.configs.recommended,
  // plugin recommended rules and overwrites
  {
    languageOptions: {
      ecmaVersion: 2024,
      globals: {
        ...globals.browser,
        ...globals.es6,
        jQuery: false,
        Promise: false,
      },
    },
    plugins: { jsdoc },
    rules: {
      "jsdoc/require-jsdoc": "error",
      "jsdoc/check-alignment": "error",
      "jsdoc/check-indentation": "error",
      "jsdoc/check-param-names": "error",
      "jsdoc/check-syntax": "error",
      "jsdoc/check-tag-names": "error",
      "jsdoc/check-types": "error",
      "jsdoc/tag-lines": ["warn", "never", { startLines: 1 }],
      "jsdoc/no-undefined-types": "error",
      "jsdoc/require-description": "error",
      "jsdoc/require-description-complete-sentence": "error",
      "jsdoc/require-example": "off",
      "jsdoc/require-hyphen-before-param-description": "error",
      "jsdoc/require-param": "error",
      "jsdoc/require-param-description": "error",
      "jsdoc/require-param-name": "error",
      "jsdoc/require-param-type": "error",
      "jsdoc/require-returns": "error",
      "jsdoc/require-returns-check": "error",
      "jsdoc/require-returns-description": "error",
      "jsdoc/require-returns-type": "error",
      "jsdoc/valid-types": "error",
    },
  },
];

ESLint sample

Error is thrown before any linting is done.

Environment

  • Node version: v22.11.0
  • ESLint version v9.38.0
  • eslint-plugin-jsdoc version: eslint-plugin-jsdoc@61.1.8

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions