-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
Description
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 viapnpm
, 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 viapnpm
.
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