webpro / reveal-md

reveal.js on steroids! Get beautiful reveal.js presentations from any Markdown file
MIT License
3.71k stars 416 forks source link

Preprocessor argument doesn't work with Windows paths #490

Closed ooker777 closed 2 months ago

ooker777 commented 2 months ago

I create test.md with content foobar, and test.js with content:

export default function (markdown, _options) {
  return new Promise((resolve, _reject) => {
    return resolve(markdown);
  });
}

Running reveal-md --preprocessor .\test.js .\test.md gives me this error:

Serving reveal.js from C:\Users\ganuo\AppData\Roaming\npm\node_modules\reveal-md\node_modules\reveal.js
Reveal-server started at http://localhost:1948
The slides are at http://localhost:1948/test.md
node:internal/modules/esm/resolve:772
    throw new ERR_INVALID_MODULE_SPECIFIER(
          ^

TypeError [ERR_INVALID_MODULE_SPECIFIER]: Invalid module ".\test.js" is not a valid package name imported from C:\Users\ganuo\AppData\Roaming\npm\node_modules\reveal-md\lib\config.js
    at parsePackageName (node:internal/modules/esm/resolve:772:11)
    at packageResolve (node:internal/modules/esm/resolve:796:5)
    at moduleResolve (node:internal/modules/esm/resolve:918:18)
    at defaultResolve (node:internal/modules/esm/resolve:1148:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:390:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:359:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:234:38)
    at ModuleLoader.import (node:internal/modules/esm/loader:322:34)
    at importModuleDynamically (node:internal/modules/esm/translators:160:35)
    at importModuleDynamicallyCallback (node:internal/modules/esm/utils:225:14) {
  code: 'ERR_INVALID_MODULE_SPECIFIER'
}

It's because of the way Node handle Windows path. See https://github.com/nodejs/node/issues/31710