我正在使用 nvm 构建需要特定(不同)节点版本的库。
当我这样做时:
nvm use 12
我得到:
现在使用节点 v12.21.0 (npm v8.14.0)
但是当我这样做时:
nvm use 14
我得到:
现在使用节点 v14.18.1 (npm v6.14.15)
我很惊讶地看到旧的npm 版本和新的npm 版本Node 版本。事情就应该这样吗?
当我这样做时,nvm use 14
我希望它使用最新的 Node 14.x 以及该 Node 版本可用的任何最新 npm 版本。或者我误解了这是如何工作的?
背景:我试图通过节点脚本顶部的 shebang 在非登录 shell 中正确nvm
设置。node
节点脚本的 shebang 是login shell
:
#!/usr/bin/env node \n
Run Code Online (Sandbox Code Playgroud)\n这不起作用,non-login shell
所以我想做相当于:
#!/usr/bin/env [[ -s $HOME/.nvm/nvm.sh ]] && source "$HOME/.nvm/nvm.sh" && node\n
Run Code Online (Sandbox Code Playgroud)\n但我无法获得正确的语法(请参阅下面的错误)。我尝试了多种方法,包括引用脚本或尝试运行它bash -c
。但每次我都会遇到解析错误。
完整的脚本是:
\n#!/usr/bin/env node\n\nconst semver = require('semver');\nconsole.log("Hello World! You're using " + process.version)\n
Run Code Online (Sandbox Code Playgroud)\n错误:
\n在登录 shell 中(我不需要它)
\n\xe2\x9d\xaf bin/nodesample.js\nenv: [[: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n在非登录外壳中我想找到解决方案
\nenv: [[: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n … 我正在尝试在Ubuntu 14.04上安装nvm,但它似乎没有使用我指定的版本.我按照https://github.com/creationix/nvm中的教程安装了,我也尝试过这里的https://www.digitalocean.com/community/tutorials/how-to-install-node-js- with-nvm-node-version-manager-on-a-vps.
我的系统上已经安装了2个节点.
which node # => /usr/local/bin/node
node --version # => v0.11.13-pre
which nodejs # => /usr/bin/nodejs
nodejs --version # => v0.10.26
Run Code Online (Sandbox Code Playgroud)
当我使用curl one liner安装nvm时,他们会给你,然后使用
nvm install 0.10.32
Run Code Online (Sandbox Code Playgroud)
它在.nvm/v0.10.32和.nvm /当前符号链接中创建一个空文件夹.另外bin文件夹也是空的.如果我安装其他版本的节点会发生此问题.我想我可以将一个版本的节点克隆到它应该进入的文件夹中,但是如果这就是我必须要做的事情.另外,我不确定我是否知道如何使我的系统使用nvm当前(从/ usr/local/bin/node到符号.nvm/current的符号链接?)没有自己做任何事情而只是按照教程,节点 - version和nodejs --version从不使用我指定的版本.
nvm use 0.10.32
Run Code Online (Sandbox Code Playgroud) 当我使用命令wget或curl(OS X El Capitan 10.11.4)安装nvm时,控制台将打印
=> nvm已经安装在/Users/weichuang/.nvm中,尝试使用git更新 => =>源字符串已经在/Users/weichuang/.bashrc中 npm ERR!/ usr / local / lib / node_modules / love中的错误:ENOTDIR:不是目录,打开'/usr/local/lib/node_modules/love/package.json' npm ERR!缺少:npmlog @,npm-registry-client @ 7.0.7要求 npm ERR!丢失:提示@ ^ 0.2.14,react-native-cli @ 0.1.4要求 =>当前,您已通过`npm`全局安装了模块。这些不会 =>在安装新节点时,不再链接到活动版本的Node =>与`nvm`; 并且它们可能(取决于您构造$ PATH的方式) =>覆盖通过`nvm`安装的模块的二进制文件: / usr /本地/ lib ??? 指挥官@ 2.9.0 ??? 科尔多瓦@ 5.3.3 ??? 下载cli@1.0.1 ??? 表达@ 4.13.3 ??? express-generator@4.13.1 ??? 永远@ 0.14.1 ??? hexo@3.1.1 ??? http-server@0.8.5 ??? 离子@ 1.7.14 ??? ios-deploy@1.8.2 ??? ios-sim@5.0.3 ??? JSONStream@1.0.6 ??? koa@1.1.2 ??? 错误:ENOTDIR:不是目录,打开'/usr/local/lib/node_modules/love/package.json ??? 标记为@ 0.3.5 ??? n@2.0.2 ??? …
我在本地机器(ubuntu)sails js(0.12.4)上使用的版本:
node -v = v4.5.0, nodejs -v = v4.5.0, npm -v =2.15.9 and sudo npm -v = 3.10.0
Run Code Online (Sandbox Code Playgroud)
它工作正常,而sailsjs没有安装在VPS 16.04/14.04 ubuntu服务器上.
当我尝试使用命令安装sails时:
sudo npm install -g sails
Run Code Online (Sandbox Code Playgroud)
它提供以下输出:
Killed.............] | fetchMetadata: sill mapToRegistry uri https://registry.npmjs.org/tough-cookie
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下命令安装时:
sudo npm install -g sails@0.11.5 or npm install -g sails@0.11.5
Run Code Online (Sandbox Code Playgroud)
然后它显示以下错误消息:
> sails@0.11.5 preinstall /usr/lib/node_modules/sails
> node ./lib/preinstall_npmcheck.js
Sails.js Installation: Checking npm-version successful
npm WARN deprecated grunt-lib-contrib@0.7.1: DEPRECATED. See readme: https://github.com/gruntjs/grunt-lib-contrib
npm WARN deprecated native-or-bluebird@1.1.2: 'native-or-bluebird' is deprecated. Please use 'any-promise' instead.
npm …
Run Code Online (Sandbox Code Playgroud) 我正在使用nvm
(https://github.com/creationix/nvm),它本质上是一个shell脚本,您可以将其导入shell,然后调用nvm install [version]
.但无论我如何尝试并调用该函数,ansible似乎都无法找到它.
我尝试过使用command
和shell
模块.我尝试过使用become
和become_user
.我尝试过sudo -iu
在https://github.com/leonidas/ansible-nvm/blob/master/tasks/main.yml中使用,但它对我不起作用.它必须是可能的,因为它在该文件中工作.
如何在Ansible中运行任何shell函数?在这种情况下source nvm.sh
,我的.zshrc中有一个允许我nvm
从交互式shell中执行命令.
使用Node Version Manager时,我可以将节点的版本设置为当前目录中的最新版本nvm use node
.如何指定使用哪个版本?
我正在与 AmazonLinux 库合作使用 Node.js 实现 lambda 函数。为此,我正在关注此链接:https : //aws.amazon.com/blogs/networking-and-content-delivery/resizing-images-with-amazon-cloudfront-lambdaedge-aws-cdn-blog/
当我使用命令运行 DockerFile 时:
FROM amazonlinux
WORKDIR /tmp
#install the dependencies
RUN yum -y install gcc-c++ && yum -y install findutils
RUN touch ~/.bashrc && chmod +x ~/.bashrc
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash
RUN source ~/.bashrc && nvm install 6.10
WORKDIR /build
Run Code Online (Sandbox Code Playgroud)
我有以下配置:
按照@Karol Samborki 的建议在 docker 映像中添加 tar 库后,我收到此错误。
我在卸载一个甚至不存在但仍然显示在路径中的包节点时遇到问题,奇怪的是它还是我愚蠢......它与nodejs相矛盾,我想摆脱它并安装一个新的节点符号链接到nodejs这样我就有了单一的事实来源。到目前为止,我已经尝试了大多数流行的包管理器。
#tag node vs nodejs linux
durrani@ideapad:~ $ nodejs --version
Command 'nodejs' not found, but can be installed with:
sudo apt install nodejs
durrani@ideapad:~ $ node --version
v12.14.0
durrani@ideapad:~ $ which nodejs
durrani@ideapad:~ $ which node
/usr/local/bin/node
durrani@ideapad:~ $ type node
node is hashed (/usr/local/bin/node)
durrani@ideapad:~ $ type nodejs
bash: type: nodejs: not found
durrani@ideapad:~ $ sudo apt-get remove node
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: …
Run Code Online (Sandbox Code Playgroud) nvm ×10
node.js ×6
npm ×5
bash ×2
javascript ×2
shell ×2
ubuntu ×2
ansible ×1
apt ×1
docker ×1
linux ×1
node-modules ×1
sails.js ×1
ubuntu-14.04 ×1
version ×1