4

运行命令node -v给出以下值:v0.10.33. 我知道 Node.js 目前是 0.12 版。然而,当运行 a 时choco update nodejs,提示显示“Nothing to update”。在“choco update npm”之后,npm 也会发生同样的情况。

我已经从他们网站 nodejs.org 上的安装包中安装了 Node.js。之后的一段时间,我还安装了 Chocolatey,并且时不时地使用该工具进行软件包安装。

是否可以让 Chocolatey 识别现有的 Node.js 安装并从那里选择 choco 更新?

我也希望能够以同样的方式从 Chocolatey 获取 npm 更新。


我没有最新的巧克力。

> choco list --local-only nodejs 
Opción desconocida: '--local-only' 

nodejs.commandline 0.12.2 
npm 1.4.9.20150213 
EthanBrown.DevTools.Web 0.3.1 
ghost 0.5.5.1 
io.js 1.7.1 
livestreamer-twitch-gui 0.7.1 
nodejs 0.12.2 
nodejs.install 0.12.2 
node-webkit-0.9.2 0.9.2 
node-webkit 0.6.2 
Brackets.Theseus 0.2.8 
Yeoman 1.1.2 

将 Chocolatey 升级到 v0.9.9.4 后

> choco list --local-only
Chocolatey v0.9.9.4 [nl] 0 packages installed.

我使用 npm 更新了 Node.js。

> node -v
v0.12.2

但是,在版本 0.10.33 重新安装 Node.js 后,

> choco install nodejs -version 0.10.33

我不能使用npm

在“npm.cmd”(C:\ProgramData\chocolatey\lib\npm\tools\npm.cmd)中找不到文件。这通常表示文件丢失或移动。

在我排除故障之前,我将暂时保留它。

4

2 回答 2

5

另一种选择,假设您已经通过 MSI 安装了 Node.js,将运行:

choco install nodejs -version 0.12.2 -y -n

-n 参数,如此处所述:

https://github.com/chocolatey/choco/wiki/CommandsInstall#options-and-switches

跳过与 Chocolatey 包关联的 PowerShell 脚本。这实际上将包版本添加到 Chocolatey 存储库中,但它不运行相关的安装脚本。

这就是我“认为”你所追求的。

注意:并不是所有的软件包都有chocolateyinstall.ps1 文件,而是依赖于Chocolatey 的默认安装行为,即为包含的EXE 文件创建垫片等。据我所知,skippowershell 标志不会阻止这种情况的发生。

于 2015-04-17T20:03:26.033 回答
1

Chocolatey 目前无法检测到已安装的应用程序并将其合并到自己的库中。现在,如果您手动安装了 Node.js MSI,然后使用 Chocolatey 安装相同或更新的版本,事情可能会正常工作。MSI 系统虽然晦涩难懂,但非常强大,大多数较新的 MSI 将包含较旧的 MSI。

你能运行 Chocolatey 命令来告诉我们你安装了哪个 Node.js 吗?

PS> choco list --local-only nodejs
Chocolatey v0.9.9.2
nodejs 0.10.33
nodejs.install 0.10.33
2 packages installed.

我安装了相同的版本。我刚刚运行了更新。我剪断了日志,但你可以看到它更新了。

PS> choco upgrade nodejs
Chocolatey v0.9.9.2

nodejs.install v0.12.2
nodejs v0.12.2

Chocolatey upgraded 2/2 package(s). 0 package(s) failed.

Node.js 是最新的。

PS> node -v
v0.12.2

并且控制面板的程序和功能小程序中的应用程序也更新了。因此,Node.js MSI 在这里做了正确的事情。

在此处输入图像描述

我认为我们需要从您的系统中查看更多文字命令输出,以确保您安装了所有正确的版本。

于 2015-04-17T16:00:04.237 回答