Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docsify fails under yarn pnp strict mode due to missing ansi-colors dependency #191

Open
tripplilley opened this issue Mar 20, 2023 · 2 comments

Comments

@tripplilley
Copy link

tripplilley commented Mar 20, 2023

Yarn (v2/3) by default operates in a strict Plug'n'Play mode which does not allow directly loading indirect dependencies.

lib/commands/init.js directly requires ansi-colors, but it's not listed in package.json.

yarn run docsify, therefore, fails (even if docsify-cli is correctly registered in package.json).

Adding "ansi-colors": "^4.1.1" to dependencies should be enough (I chose that version because it's what's already in package-lock.json from an indirect dependency).

$ yarn run docsify
/Users/tlilley/projects/veatech/sbx/smithy/.pnp.cjs:11796
    throw firstError;
    ^

Error: docsify-cli tried to access ansi-colors, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.

Required package: ansi-colors
Required by: docsify-cli@npm:4.4.4 (via /Users/tlilley/projects/veatech/sbx/smithy/.yarn/cache/docsify-cli-npm-4.4.4-3d7dbcc799-2f72ff07d0.zip/node_modules/docsify-cli/lib/commands/)

Require stack:
- /Users/tlilley/projects/veatech/sbx/smithy/.yarn/cache/docsify-cli-npm-4.4.4-3d7dbcc799-2f72ff07d0.zip/node_modules/docsify-cli/lib/commands/init.js
- /Users/tlilley/projects/veatech/sbx/smithy/.yarn/cache/docsify-cli-npm-4.4.4-3d7dbcc799-2f72ff07d0.zip/node_modules/docsify-cli/lib/index.js
- /Users/tlilley/projects/veatech/sbx/smithy/.yarn/cache/docsify-cli-npm-4.4.4-3d7dbcc799-2f72ff07d0.zip/node_modules/docsify-cli/bin/docsify
    at require$$0.Module._resolveFilename (/Users/tlilley/projects/veatech/sbx/smithy/.pnp.cjs:11795:13)
    at require$$0.Module._load (/Users/tlilley/projects/veatech/sbx/smithy/.pnp.cjs:11645:42)
    at Module.require (node:internal/modules/cjs/loader:1157:19)
    at require (node:internal/modules/helpers:119:18)
    at Object.<anonymous> (/Users/tlilley/projects/veatech/sbx/smithy/.yarn/cache/docsify-cli-npm-4.4.4-3d7dbcc799-2f72ff07d0.zip/node_modules/docsify-cli/lib/commands/init.js:10:16)
    at Module._compile (node:internal/modules/cjs/loader:1275:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1329:10)
    at require$$0.Module._extensions..js (/Users/tlilley/projects/veatech/sbx/smithy/.pnp.cjs:11839:33)
    at Module.load (node:internal/modules/cjs/loader:1133:32)
    at require$$0.Module._load (/Users/tlilley/projects/veatech/sbx/smithy/.pnp.cjs:11676:14)

Node.js v19.8.1
@tripplilley tripplilley changed the title docsify fails under pnpm / yarn strict mode due to missing ansi-colors dependency docsify fails under yarn pnp strict mode due to missing ansi-colors dependency Mar 20, 2023
@tripplilley
Copy link
Author

For anyone else dealing with this, you can work around it by using "loose" Plug'n'Play mode until there's an update.

$ yarn config set pnpMode loose
➤ YN0000: Successfully set pnpMode to 'loose'

You'll also need to remove the cached Plug'n'Play install file and reinstall your dependencies:

$ rm .pnp.cjs
$ yarn install
➤ YN0000: ┌ Resolution step
➤ YN0000: └ Completed
➤ YN0000: ┌ Fetch step
➤ YN0000: └ Completed
➤ YN0000: ┌ Link step
➤ YN0000: └ Completed
➤ YN0000: Done in 0s 341ms

@tripplilley
Copy link
Author

Apparently there are other missing dependency declarations, too 😅

$ yarn run docsify serve -p 3006
(node:39416) [MODULE_NOT_FOUND] Error: docsify-cli tried to access ansi-colors, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
(Use `node --trace-warnings ...` to show where the warning was created)
(node:39416) [MODULE_NOT_FOUND] Error: node-fetch tried to access encoding (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.
(node:39416) [MODULE_NOT_FOUND] Error: debug tried to access supports-color (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.
(node:39416) [MODULE_NOT_FOUND] Error: docsify-server-renderer tried to access marked, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
(node:39416) [MODULE_NOT_FOUND] Error: docsify-server-renderer tried to access prismjs, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
(node:39416) [MODULE_NOT_FOUND] Error: docsify-server-renderer tried to access strip-indent, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
(node:39416) [MODULE_NOT_FOUND] Error: docsify-cli tried to access y18n, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
(node:39416) [MODULE_NOT_FOUND] Error: yargonaut tried to access yargs, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.

Using pnpMode: loose, as noted in my previous comment, still works, but that's a setting that affects the entire project, so it's really just a short-term solution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant