Skip to content

keytar not found #9623

@luctrate

Description

@luctrate

Verify latest release

  • I verified that the issue exists in the latest pnpm release

pnpm version

No response

Which area(s) of pnpm are affected? (leave empty if unsure)

Dependencies resolver

Link to the code that reproduces this issue or a replay of the bug

No response

Reproduction steps

Title: Native module keytar fails to load when installed via pnpm, works with npm

Hi, first of all — huge thanks for pnpm. I really prefer it over npm in most cases. I’ve never had issues like this before and wasn’t sure where to report it, but after some digging, I’ve boiled it down to a minimal repro case.


🧪 Reproduction steps

Create a simple file test.js:

const keytar = require('keytar');

(async () => {
  await keytar.setPassword('forge-test', 'test-user', 'secret');
  const pwd = await keytar.getPassword('forge-test', 'test-user');
  console.log('Retrieved from keychain:', pwd);
})();

And package.json:

{
  "name": "keytar-test",
  "version": "1.0.0",
  "type": "commonjs",
  "dependencies": {
    "keytar": "^7.9.0"
  }
}

✅ Works with npm install

npm install
node test.js
# Output:
Retrieved from keychain: secret

❌ Fails with pnpm install

pnpm install
node test.js
# Error:
Error: Cannot find module '../build/Release/keytar.node'
Require stack:
- /Users/steven/keytar-test/node_modules/.pnpm/[email protected]/node_modules/keytar/lib/keytar.js
- /Users/steven/keytar-test/test.js

🧠 Notes

  • This is on macOS 15.5 (Sequoia) using Node.js v20.17.0. But same with node 22
  • I assume the issue is that keytar's native .node binding isn't being resolved properly when installed via pnpm, likely due to symlinking or isolation in .pnpm/ structure.
  • This breaks any downstream tools relying on keytar (in my case, Atlassian Forge CLI, but only when installed globally via pnpm.

Describe the Bug

Fails with

steven@Stevens-MacBook-Pro ~/keytar-test> node test.js 
node:internal/modules/cjs/loader:1228
  throw err;
  ^

Error: Cannot find module '../build/Release/keytar.node'
Require stack:
- /Users/steven/keytar-test/node_modules/.pnpm/[email protected]/node_modules/keytar/lib/keytar.js
- /Users/steven/keytar-test/test.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1225:15)
    at Module._load (node:internal/modules/cjs/loader:1051:27)
    at Module.require (node:internal/modules/cjs/loader:1311:19)
    at require (node:internal/modules/helpers:179:18)
    at Object.<anonymous> (/Users/steven/keytar-test/node_modules/.pnpm/[email protected]/node_modules/keytar/lib/keytar.js:1:14)
    at Module._compile (node:internal/modules/cjs/loader:1469:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1548:10)
    at Module.load (node:internal/modules/cjs/loader:1288:32)
    at Module._load (node:internal/modules/cjs/loader:1104:12)
    at Module.require (node:internal/modules/cjs/loader:1311:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/steven/keytar-test/node_modules/.pnpm/[email protected]/node_modules/keytar/lib/keytar.js',
    '/Users/steven/keytar-test/test.js'
  ]
}

Node.js v20.17.0

Expected Behavior

Runs without error just wiht npm install..

steven@Stevens-MacBook-Pro ~/keytar-test> npm install

added 37 packages, and audited 38 packages in 1s

9 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
steven@Stevens-MacBook-Pro ~/keytar-test> node test.jy
Retrieved from keychain: secret

Which Node.js version are you using?

20.17.0

Which operating systems have you used?

  • macOS
  • Windows
  • Linux

If your OS is a Linux based, which one it is? (Include the version if relevant)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions