vuepress icon indicating copy to clipboard operation
vuepress copied to clipboard

Hard coded reference to `node_modules` from `docs`?

Open CanadianBeaver opened this issue 3 years ago • 1 comments

  • [x] I confirm that this is an issue rather than a question.

Bug report

Steps to reproduce

package.json:

{
  "scripts": {
    "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vuepress dev ../../Articles/ --open",
    "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vuepress build ../../Articles/"
  },
  "devDependencies": {
    "markdown-it-abbr": "^1.0.4",
    "markdown-it-footnote": "^3.0.3",
    "markdown-it-plantuml": "^1.4.1",
    "markdown-it-sub": "^1.0.0",
    "markdown-it-sup": "^1.0.0",
    "markdown-it-textual-uml": "^0.12.0",
    "vuepress": "^1.9.2"
  }
}

config.js:

module.exports = {
...
  markdown: {
    extendMarkdown: md => {
      md.use(require('markdown-it-sub'))
      md.use(require('markdown-it-sup'))
      md.use(require('markdown-it-footnote'))
      md.use(require('markdown-it-abbr'))
      md.use(require('markdown-it-plantuml'))
      md.use(require('markdown-it-textual-uml'))
    }
  }
}

Executing npm run dev or npm run build thrown exception (workdir is C:\Users\~~~\Website-Generators\vuepress):

npm run build
> build
> SET NODE_OPTIONS=--openssl-legacy-provider && vuepress build ../../Articles/

wait Extracting site metadata...
tip Apply theme @vuepress/theme-default ...
tip Apply plugin container (i.e. "vuepress-plugin-container") ...
tip Apply plugin @vuepress/register-components (i.e. "@vuepress/plugin-register-components") ...
tip Apply plugin @vuepress/active-header-links (i.e. "@vuepress/plugin-active-header-links") ...
tip Apply plugin @vuepress/search (i.e. "@vuepress/plugin-search") ...
tip Apply plugin @vuepress/nprogress (i.e. "@vuepress/plugin-nprogress") ...
Error: Cannot find module 'markdown-it-sub'
Require stack:
- C:\Users\~~~\Articles\.vuepress\config.js
- C:\Users\~~~\Website-Generators\vuepress\node_modules\@vuepress\core\lib\node\loadConfig.js
- C:\Users\~~~\Website-Generators\vuepress\node_modules\@vuepress\core\lib\node\App.js
- C:\Users\~~~\Website-Generators\vuepress\node_modules\@vuepress\core\lib\index.js
- C:\Users\~~~\Website-Generators\vuepress\node_modules\vuepress\lib\registerCoreCommands.js
- C:\Users\~~~\Website-Generators\vuepress\node_modules\vuepress\cli.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at extendMarkdown (C:\Users\~~~\Articles\.vuepress\config.js:35:14)
    at afterInstantiate (C:\Users\~~~\Website-Generators\vuepress\node_modules\@vuepress\core\lib\node\createMarkdown.js:23:23)
    at module.exports (C:\Users\~~~\Website-Generators\vuepress\node_modules\@vuepress\markdown\index.js:125:23)
    at module.exports (C:\Users\~~~\Website-Generators\vuepress\node_modules\@vuepress\core\lib\node\createMarkdown.js:27:10)
    at App.process (C:\Users\~~~\Website-Generators\vuepress\node_modules\@vuepress\core\lib\node\App.js:113:21)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async build (C:\Users\~~~\Website-Generators\vuepress\node_modules\@vuepress\core\lib\index.js:26:3)

What is expected?

World peace

What is actually happening?

Project can not be build, throws an exception

Other relevant information

  • Removing markdown: declaration from config.js can pass the build, but of course markdown is displayed incorrectly.

  • Tried to copy whole node_modules folder to the same folder with Articles (root folder of Articles) - can be build. So, probably the issue is somewhere in VuePress and it is related to calculation the path for node_modules, possible hardcoded.

  • Output of npx vuepress info in my VuePress project:

Environment Info:

  System:
    OS: Windows 10 10.0.19045
    CPU: (6) x64 Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz
  Binaries:
    Node: 18.14.2 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.19 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 9.5.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Chrome: Not Found
    Edge: Spartan (44.19041.1266.0), Chromium (110.0.1587.57)
  npmPackages:
    @vuepress/core:  1.9.9
    @vuepress/theme-default:  1.9.9
    vuepress: ^1.9.2 => 1.9.9
  npmGlobalPackages:
    vuepress: Not Found

CanadianBeaver avatar Mar 03 '23 08:03 CanadianBeaver

Shortly: VuePress are looking for a folder of node_modules for getting markdown extensions defined in config.js:. But instead of looking node_modules folder in working dir, VuePress is looking node_modules folder in docs\...\node_modules.

CanadianBeaver avatar Mar 03 '23 15:03 CanadianBeaver