meteor/meteor

[Meteor 3] "meteor node" use the old node 14 instead of 20

Closed this issue · 5 comments

I use meteor 3 rc1 and there's some incoherence as you can see, "meteor node" and "meteor npm" commands still use node 14

"meteor node" uses node 14

❯ meteor node -v
v14.21.4
❯ meteor node
Welcome to Node.js v14.21.4.
Type ".help" for more information.
>

"meteor shell" uses node 20

❯ meteor shell

Welcome to the server-side interactive shell!

Tab completion is enabled for global variables.

Type .reload to restart the server and the shell.
Type .exit to disconnect from the server and leave the shell.
Type .help for additional help.

> process.version
'v20.11.1'

I want to update a npm package that is not compatible with node 14, it displays false warning. In the end, it seems that it still install the latest version of the package but it's unclear.

For example, try to install the npm package discord.js:

❯ meteor npm install discord.js
npm WARN notsup Unsupported engine for discord.js@14.15.2: wanted: {"node":">=16.11.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: discord.js@14.15.2
npm WARN notsup Unsupported engine for @discordjs/collection@1.5.3: wanted: {"node":">=16.11.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @discordjs/collection@1.5.3
npm WARN notsup Unsupported engine for undici@6.13.0: wanted: {"node":">=18.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: undici@6.13.0
npm WARN notsup Unsupported engine for @discordjs/rest@2.3.0: wanted: {"node":">=16.11.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @discordjs/rest@2.3.0
npm WARN notsup Unsupported engine for @discordjs/builders@1.8.1: wanted: {"node":">=16.11.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @discordjs/builders@1.8.1
npm WARN notsup Unsupported engine for @discordjs/util@1.1.0: wanted: {"node":">=16.11.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @discordjs/util@1.1.0
npm WARN notsup Unsupported engine for @discordjs/ws@1.1.0: wanted: {"node":">=16.11.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @discordjs/ws@1.1.0
npm WARN notsup Unsupported engine for @discordjs/formatters@0.4.0: wanted: {"node":">=16.11.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @discordjs/formatters@0.4.0
npm WARN notsup Unsupported engine for @sapphire/snowflake@3.5.3: wanted: {"node":">=v14.0.0","npm":">=7.0.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @sapphire/snowflake@3.5.3
npm WARN notsup Unsupported engine for @sapphire/shapeshift@3.9.7: wanted: {"node":">=v16"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @sapphire/shapeshift@3.9.7
npm WARN notsup Unsupported engine for @discordjs/collection@2.1.0: wanted: {"node":">=18"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @discordjs/collection@2.1.0
npm WARN notsup Unsupported engine for @vladfrangu/async_event_emitter@2.2.4: wanted: {"node":">=v14.0.0","npm":">=7.0.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @vladfrangu/async_event_emitter@2.2.4
npm WARN notsup Unsupported engine for @sapphire/async-queue@1.5.2: wanted: {"node":">=v14.0.0","npm":">=7.0.0"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @sapphire/async-queue@1.5.2
npm WARN notsup Unsupported engine for @discordjs/collection@2.1.0: wanted: {"node":">=18"} (current: {"node":"14.21.4","npm":"6.14.18"})
npm WARN notsup Not compatible with your version of node/npm: @discordjs/collection@2.1.0

Are you running the first command in the app directory? If it is outside I believe Meteor will return the Node version for the latest recommended version (so for Meteor 2.15).

All the commands are run in the same directory aka the meteor app directory.

It does this in all our meteor app, even with the repo we've made for another bug that you can clone to test: https://github.com/acemtp/meteor3reactbug

When you execute those commands, you don't have the same output?

pwd
/Users/vialec75/tmp/meteorbug3

❯ ls -la
total 32
drwxr-xr-x  12 vialec75  staff   384 May 17 14:48 .
drwxr-xr-x   6 vialec75  staff   192 May 17 18:37 ..
drwxr-xr-x  14 vialec75  staff   448 May 22 08:32 .git
-rw-r--r--@  1 vialec75  staff    14 May 17 14:03 .gitignore
drwxr-xr-x  10 vialec75  staff   320 May 17 14:06 .meteor
-rw-r--r--@  1 vialec75  staff  2105 May 17 14:53 README.md
drwxr-xr-x   4 vialec75  staff   128 May 17 14:47 bin
drwxr-xr-x@  3 vialec75  staff    96 May 17 13:47 client
drwxr-xr-x  11 vialec75  staff   352 May 17 14:48 node_modules
-rw-r--r--   1 vialec75  staff  2476 May 17 14:03 package-lock.json
-rw-r--r--   1 vialec75  staff   459 May 17 14:03 package.json
drwxr-xr-x   3 vialec75  staff    96 May 17 14:42 packages

❯ meteor node -v
v14.21.4

❯ meteor --version
Meteor 3.0-rc.1

❯ cat .meteor/release
METEOR@3.0-rc.1

After investigating we found that if you used curl https://install.meteor.com/ | sh to first install Meteor it will still run Node.js v14 after you upgrade an app, we are debating the best approach to tackle this.

For now, you can delete .meteor folder in your home directory and re-install with npx meteor@rc, then the correct Node.js version will be used.

Indeed, I use the original way to install Meteor (since I'm an original fan < Meteor 0.5).

I was never a big fan of the installation of Meteor with npm but anyway, thanks for the finding a workaround!

We found out that you have to make sure the bundle for the release version of the app is present. So running meteor run first will force it to be downloaded, subsequently the Node.js present in that bundle will be correctly used, no need to reinstall Meteor with npx.