Skip to content

[Bug] jsdoc2md bad call to jsdoc: Path-Problem #307

Closed
@Bizarrus

Description

@Bizarrus

Executing jsdoc fails because jsdoc2md does not check or correct paths.

File Structure:

Main Path: E:/ServerManager - Master/
- Bin/Docs.js (this generator, see Sample)
- main.js (Main file)
- Docs/ (later the output)

Sample:

#!/usr/bin/node
import jsdoc2md from 'jsdoc-to-markdown'
import { promises as fs } from 'node:fs'
import path from 'path'

/* input and output paths */
const inputFile = './main.js'

/* get template data */
const templateData = await jsdoc2md.getTemplateData({ files: inputFile })

/* reduce templateData to an array of class names */
const classNames = templateData.filter(i => i.kind === 'class').map(i => i.name)

/* create a documentation file for each class */
for (const className of classNames) {
    const template = `{{#class name="${className}"}}{{>docs}}{{/class}}`
    console.log(`rendering ${className}, template: ${template}`)
    const output = await jsdoc2md.render({ data: templateData, template: template })
    await fs.writeFile(path.resolve(`${className}.md`), output)
}

Output:

PS E:\ServerManager - Master> npm run docs

> master@1.0.0 docs
> node ./Bin/Docs.js

file:///E:/ServerManager%20-%20Master/node_modules/jsdoc-api/lib/explain.js:40
      const jsdocErr = new Error(jsdocOutput.stderr.trim() || firstLineOfStdout || 'Jsdoc failed.')
                       ^

JSDOC_ERROR: Jsdoc failed.
    at Explain._runJsdoc (file:///E:/ServerManager%20-%20Master/node_modules/jsdoc-api/lib/explain.js:40:24)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Explain.execute (file:///E:/ServerManager%20-%20Master/node_modules/jsdoc-api/lib/jsdoc-command.js:57:16)
    at async JsdocToMarkdown.getTemplateData (file:///E:/ServerManager%20-%20Master/node_modules/jsdoc-to-markdown/index.js:68:23)
    at async file:///E:/ServerManager%20-%20Master/Bin/Docs.js:10:22 {
  cause: Error: Command failed: node E:\ServerManager - Master\node_modules\jsdoc\jsdoc.js  -X ./main.js
  node:internal/modules/cjs/loader:1222
    throw err;
    ^
  
  Error: Cannot find module 'E:\ServerManager'
      at Module._resolveFilename (node:internal/modules/cjs/loader:1219:15)
      at Module._load (node:internal/modules/cjs/loader:1045:27)
      at TracingChannel.traceSync (node:diagnostics_channel:315:14)
      at wrapModuleLoad (node:internal/modules/cjs/loader:215:24)
      at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:158:5)
      at node:internal/main/run_main_module:30:49 {
    code: 'MODULE_NOT_FOUND',
    requireStack: []
  }

  Node.js v22.5.1

      at genericNodeError (node:internal/errors:983:15)
      at wrappedFn (node:internal/errors:537:14)
      at ChildProcess.exithandler (node:child_process:421:12)
      at ChildProcess.emit (node:events:520:28)
      at maybeClose (node:internal/child_process:1105:16)
      at ChildProcess._handle.onexit (node:internal/child_process:305:5) {
    code: 1,
    killed: false,
    signal: null,
    cmd: 'node E:\\ServerManager - Master\\node_modules\\jsdoc\\jsdoc.js  -X ./main.js',
    stdout: '',
    stderr: 'node:internal/modules/cjs/loader:1222\r\n' +
      '  throw err;\r\n' +
      '  ^\r\n' +
      '\r\n' +
      "Error: Cannot find module 'E:\\ServerManager'\r\n" +
      '    at Module._resolveFilename (node:internal/modules/cjs/loader:1219:15)\r\n' +
      '    at Module._load (node:internal/modules/cjs/loader:1045:27)\r\n' +
      '    at TracingChannel.traceSync (node:diagnostics_channel:315:14)\r\n' +
      '    at wrapModuleLoad (node:internal/modules/cjs/loader:215:24)\r\n' +
      '    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:158:5)\r\n' +
      '    at node:internal/main/run_main_module:30:49 {\r\n' +
      "  code: 'MODULE_NOT_FOUND',\r\n" +
      '  requireStack: []\r\n' +
      '}\r\n' +
      '\r\n' +
      'Node.js v22.5.1\r\n'
  }
}

Node.js v22.5.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions