Open vfilatov opened 2 months ago
Hi! This repo is issues with the NodeJS core, and this looks like an issue with a package installation.
But, to answer your question, modules are usually installed with npm install <module>
(or similar, depending on your package manager).
Installed packages typically appear in ./node_modules/<module>
, so if that folder doesn't exist, than the package is not installed.
If your experiencing an issue with pnpm
, please file an issue in their repository.
Thank you!
Thanks!
@VoltrexKeyva, I believe this is a wrong-repo
issue. Could you label it when you get a chance? Thank you!
Pinging you as you edited the question (and are a member of the triage team)
Hi! This repo is issues with the NodeJS core, and this looks like an issue with a package installation.
But, to answer your question, modules are usually installed with
npm install <module>
(or similar, depending on your package manager). Installed packages typically appear in./node_modules/<module>
, so if that folder doesn't exist, than the package is not installed.If your experiencing an issue with
pnpm
, please file an issue in their repository.Thank you!
They insist that is a nodejs
bug.
https://github.com/pnpm/pnpm/issues/7931#issuecomment-2093152936
Both forms of code run fine, so the dependencies are installed correctly
// index.js
// node ./index.js
const isEven = require('is-even')
console.log(isEven(1))
// index.mjs
// node ./index.mjs
import * as isEven from 'is-even'
console.log(isEven.default(1))
Esbuild can also bundle correctly
esbuild ./index.mjs --bundle --platform=node
I found an interesting thing. This line of code will affect the execution results. After commenting it out, it will only report an error the first time it is run. After that, it can run correctly every time. After removing the comment, it will report an error every time it is run.
import fs from 'fs';
import { createServer } from 'net';
const mySocketFile = '/tmp/mysocketfile';
if (fs.statSync(mySocketFile, { throwIfNoEntry: false }))
fs.unlinkSync(mySocketFile);
// magic line
createServer((socket) => { }).listen(mySocketFile);
setTimeout(async () => {
const isEven = await import("is-even")
console.log("isEven: ", isEven.default(1))
});
node --version
v22.1.0
@vfilatov Can you test using node 18? On my machine node18 doesn't have this problem
@vfilatov Can you test using node 18? On my machine node18 doesn't have this problem
Yes, this particular example working on node18. But this example is a simplified code from the original issue, which NOT working on node18 either.
I found an interesting thing. This line of code will affect the execution results. After commenting it out, it will only report an error the first time it is run. After that, it can run correctly every time. After removing the comment, it will report an error every time it is run.
import fs from 'fs'; import { createServer } from 'net'; const mySocketFile = '/tmp/mysocketfile'; if (fs.statSync(mySocketFile, { throwIfNoEntry: false })) fs.unlinkSync(mySocketFile); // magic line createServer((socket) => { }).listen(mySocketFile); setTimeout(async () => { const isEven = await import("is-even") console.log("isEven: ", isEven.default(1)) });
node --version v22.1.0
Yes, that is the point! Initially I though the problem is on the SvelteKit side, but this simplified code excludes all SvelteKit relations. It is either pnpm or node. As you found the (simplified) code working under node18 that makes me suspect the code might be on node core...
Hi! If you delete the package-lock and pnpm-lock files and run npm i
, then test the code in the latest version (v20.1.3
for LTS), will this issue still occur?
Hi! If you delete the package-lock and pnpm-lock files and run
npm i
, then test the code in the latest version (v20.1.3
for LTS), will this issue still occur?
Yes, it is working when I use npm
I mean there is no issues when using npm
So this probably isn't an issue with npm
. What happens when you follow the same instructions but use pnpm
instead?
So this probably isn't an issue with
npm
. What happens when you follow the same instructions but usepnpm
instead?
when I use pnpm
and node 20, I get the error above.
when I use pnpm
and node 18, I do not get the error above.
when I use npm
and any node, I do not get the error above.
So, despite what the pnpm
team may have said, it really doesn't seem like an issue with Node.
So, despite what the
pnpm
team may have said, it really doesn't seem like an issue with Node.
It might an issue on both sides... As something changed between node18 & node20... Would be great if somebody could simply debug the code and find that "breaking point". May guess that bug could be fixed by either team.
Well, the change from Node.js v18 to Node.js v20 was breaking, as with major release lines, so breakages are expected, maybe the pnpm team knows?
Well, the change from Node.js v18 to Node.js v20 was breaking, as with major release lines, so breakages are expected, maybe the pnpm team knows?
Someone more familiar with both libraries would need to investigate this in depth, and as a short-term solution, maybe try running it with bun for now?
Marking as NPM ad this regards it vs pnpm
Version
v20.12.1
Platform
Linux dev 5.10.0-28-amd64 nodejs/node#1 SMP Debian 5.10.209-2 (2024-01-31) x86_64 GNU/Linux
Subsystem
No response
What steps will reproduce the bug?
The original issue https://github.com/sveltejs/kit/issues/11912
How often does it reproduce? Is there a required condition?
No response
What is the expected behavior? Why is that the expected behavior?
If package installed with
npm i
it does not throw the error belowWhat do you see instead?
Additional information
No response