我有一个新安装的14.04 LTS版本的Ubuntu Linux,我最近在其上安装了NVM和Node.js. 我按照这些说明在接收器中输入接下来的两个命令.
curl https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh
nvm install 0.10
太棒了,我安装了NVM和Node!运行命令nvm ls为我提供了已安装的版本列表等等......那么?好吧,问题是重新启动计算机/注销后...我得到:
ricardo:~$ nvm ls
sbin
mkdir: cannot create directory ‘/usr/sbin/alias’: Permission denied
Run Code Online (Sandbox Code Playgroud)
我正在使用其他命令获得类似的消息,例如:
ricardo:~$ nvm use 0.10
N/A version is not installed yet
ricardo:~$ nvm deactivate
Could not find /usr/sbin/*/bin in $PATH
Could not find /usr/sbin/*/share/man in $MANPATH
Could not find /usr/sbin/*/lib/node_modules in $NODE_PATH
Run Code Online (Sandbox Code Playgroud)
当我进入〜/ .nvm /目录时,我看到我安装的Node版本仍然存在,我该如何解决这个问题?
我有各种各样的乐趣.
最初的问题是终端需要在安装NVM后重新启动,以便我可以使用.bashrc设置重新初始化然后安装NodeJS - 所以我的想法是我将构建一个已经安装了NVM的基本盒.这样终端就已经初始化了NVM的东西.
不是这样的......显然使用Vagrant包装一个basebox会忽略/ home/vagrant文件夹中的所有内容.ARRRRRRRGGGGHHHHH!
真的吗?!-1-酮
有人有运气吗?将NVM安装在流浪盒内?甚至没有sudo的NodeJ?这是一个可怕的兔子洞,我想出去!
我想NVM从bash脚本运行一个命令,即nvm use 0.12.7.所以,我用bash文件写了:
#!/bin/bash
. ~/.nvm/nvm.sh
nvm use 0.12.7
Run Code Online (Sandbox Code Playgroud)
然后在终端中运行命令as sudo ./script.sh(script.sh是我的bash文件,其中编写了上面的代码).它给了我结果Now using node v0.12.7.但当我检查版本是否激活时,我发现没有任何影响.即我运行命令nvm ls并将结果发现为:
v0.12.0
v0.12.7
Run Code Online (Sandbox Code Playgroud)
那个版本的版本0.12.7没有激活.那么,我应该在bash脚本中编写哪些内容,因为我可以从bash文件中激活节点版本.
我正在使用Apache和Phusion Passenger部署rails应用程序我已经使用此堆栈部署了应用程序但现在我使用NVM来安装节点但是当我尝试加载该站点时显示错误,查看日志显示此错误:
找不到JavaScript运行时.有关可用运行时的列表,请参阅https://github.com/rails/execjs.
在这台服务器上,我没有安装来自OS repos的nodejs,查看乘客文档显示了有关passenger_nodejs的内容,但这是来自nginx.
这是我对apache的看法:
ServerName yourserver.com
# Tell Apache and Passenger where your app's 'public' directory is
DocumentRoot /var/www/myproj/public
PassengerRuby /home/appuser/.rvm/gems/ruby-2.3.0/wrappers/ruby
PassengerNodejs /home/appuser/.nvm/versions/node/v6.9.2/bin/node
# Relax Apache security settings
<Directory /var/www/myproj/public>
Allow from all
Options -MultiViews
# Uncomment this if you're on Apache >= 2.4:
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
并继续显示该错误
从OS repos安装nodejs修复了消息,应用程序正常工作,但是因为它使用的是OS的节点版本,但我想使用NVM版本.
以前,我v0.10.46在ec2服务器上安装了节点版本。对于最近的项目,我决定尝试pm2并使用来安装pm2
npm install pm2 -g。
但是,pm2 start index.js由于该项目使用带有箭头功能和let关键字的ES6语法,因此出错了。
因此,我使用nvm将节点版本更新为最新的v6.9.1,该版本也与我们在本地(Windows)上开发时所使用的版本相同。
但是,pm2 start index.js再次出错,并显示相同的错误:
pm2 show index提示nodejs版本仍未更新。我删除了旧的nodejs版本,再次安装了pm2,仍然无济于事。
我也尝试使用其他方法,方法是:
pm2 start index.js --interpreter=~/.nvm/versions/node/v6.9.1/bin/node
Run Code Online (Sandbox Code Playgroud)
强制pm2使用节点的最新安装版本。每次尝试都会给我相同版本的nodejs带来的相同错误。为什么Pm2不采用最新版本的node并坚持使用0.10.46?
如果有帮助:
which node
~/.nvm/versions/node/v6.9.1/bin/node
which pm2
~/.nvm/versions/node/v6.9.1/bin/pm2
Run Code Online (Sandbox Code Playgroud)
另外,v0.10.46未使用nvm安装。
编辑:
这是正在运行的pm2守护程序,使用ps -ef | grep pm2:
请注意,ec2-user是登录用户,我也尝试过以root用户登录。我还以root用户身份安装了运行节点v6.9.1和pm2的nvm,但没有成功。我犯了同样的错误。
我在MacOS上,我从Homebrew Node切换到NVM,并从Homebrew中删除了Node,但后来很多我以前的软件包再也找不到Node(Sublime,Heroku等)...所以我必须手动更新节点到这些包.
Node在使用NVM时在哪里?
我想我可能已经在做的安装过程中的某种不利nodejs和nvm。
当我开始bash或打开终端时,我得到:
:~$ bash
N/A: version "N/A -> N/A" is not yet installed.
You need to run "nvm install N/A" to install it before using it.
Run Code Online (Sandbox Code Playgroud)
nvm ls从命令行使用我得到:
回顾我的历史,我确实找到了两行试图设置别名的行(我相信我是从遵循的一组说明中得到的)
据我所知,除了bash启动时,我没有任何错误,并且这些行是从生成的.bashrc:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
Run Code Online (Sandbox Code Playgroud)
我的主要目的是了解的输出,nvm ls是否有需要修复的内容。
除了奖金,我如何摆脱登录时的这些错误(除了简单地删除最后两行);)
我在Ubuntu 17.04上
检查Matt答案中的链接后,我看到这些是我看到的说明。看来我在这里和那里错过了一点。这是我所做的,到目前为止的结果是:
lts/boron版本号外,其他更改没有太大变化。呈黄色,我猜它仍然没有安装。仍然不确定为什么要列入我的名单。nvm install iojs-v1.0.3
Run Code Online (Sandbox Code Playgroud)
所以我清除了红色 …
我正在使用nvm该--no-use标志,因为这导致我的终端启动非常慢。这意味着我总是需要nvm use <NODE_VERSION>在新的终端选项卡上运行才能使用node或npm。
我有一个使用Git Hooks配置的项目ghooks,因此,每次移至其他分支或提交某些内容时,WebStorm和SourceTree都会收到不同类型的错误,所有错误都node找不到。这些是其中一些:
SourceTreecheckout:
git -c diff.mnemonicprefix=false -c core.quotepath=false -c
credential.helper=sourcetree checkout BRANCH
Switched to branch 'BRANCH'
M ...
M ...
...
env: node: No such file or directory
Completed with errors, see above
Run Code Online (Sandbox Code Playgroud)
WebStormcommit:
Commit failed with error
0 files committed, 3 files failed to commit: COMMIT_MESSAGE env: node: No such file or directory
Run Code Online (Sandbox Code Playgroud)
在WebStorm中,我认为手动设置node要使用的版本(在之下Preferences > …
在Windows 10计算机上并使用nvm4w,我尝试了以下操作:
从上图:
node --version 检查当前版本nvm list 列出已安装的版本nvm use 8.8.1 所以我们从6切换到8nvm on 启用它node --version 重新检查节点版本我究竟做错了什么?
我正在尝试使用nvm将本地节点版本从8.9.0更新到8.10.0。但这并没有得到体现。这是我尝试过的:
node -v
-> v8.9.0
nvm use 8.10.0
-> Now using node v8.10.0 (npm v5.5.1)
node -v
-> v8.9.0
我不知道为什么它不会改变。请让我知道我做错了什么。