在MSYS2上安装nodejs和npm

15

我的操作系统是win7,我使用的终端是MSYS2(版本:MSYS_NT-6.1),请给出安装nodejs和npm的建议,谢谢!

5个回答

20

我找到了解决问题的方法,

64位环境。

pacman -S mingw-w64-x86_64-nodejs

32位环境。

pacman -S mingw-w64-i686-nodejs

安装完成后,打开终端

$ node -v
v6.11.0

3
另外,npm 与 Node.js 一同分发,这意味着当你下载 Node.js 时,npm 会自动安装。使用 $ npm -v 命令检查版本。 - Alejandro Blasco
3
对于那些想知道为什么 node.exe 不在 msys2 路径中的人,你需要使用相应的 mingw 控制台。(32/64 位) - Alex Barker
3
在 Msys 包中(https://packages.msys2.org/search?t=pkg&q=nodejs)没有可用的 Node.js 软件包。 - Chris P

11

截至2020年,mingw-w64-x86_64-nodejs软件包已不再可用。在Windows机器上安装Node.jsnpmgit的最简单方法是使用官方的Windows安装程序:

安装完成后,打开命令提示符(点击“开始”,然后输入cmd并按下[ENTER]),并验证所有三个工具是否都已存在:

git --version
node --version
npm --version

稍后,要更新Node.js,只需从相同的来源重新安装即可。


如果您使用其他终端,如Windows终端,则在启动msys2_shell.cmd时必须添加-full-path选项。在官方文档https://www.msys2.org/docs/terminals/中出于某种原因未建议使用`-full-path`选项。 - Cerlancism
你使用了Windows安装程序吗? - jpaugh
这不起作用。我的MSYS终端与Windows cmd“不同”,在MSYS终端中运行cmd,然后在其中运行npm,仍然存在相同的问题... - D Left Adjoint to U

2

我在这个问题上浪费了很多时间。我的解决方案是:


虽然使用这种解决方案,.npmrc文件将会在C:\Users\tom中生成,而不是在msys2 shell的$HOME目录中,那么该如何解决呢? - Iceberg

2
使用 Windows 安装程序可以起作用,Node.js 在 C:\Program Files\nodejs\ 提供了 bash 脚本版本的 npmnpx,以帮助简化流程。
然而,与 Cerclanism 在 @ jmgonet 的答案中的评论相反,无论您使用什么终端,都不应该在 MinGW 中使用 --full-path,因为这会默认将整个 Windows 路径引入到 MinGW 环境中。
(假设您是一个典型的 Windows 开发人员,拥有像 MSVC、Windows Python 等安装目录在路径中,其中包含大量与 MinGW 路径成员冲突的名称,您可以看到这可能会在某个时候咬到您。我完整的 Windows CMD.exe %PATH% 是 1236 个字符!我不想让所有这些被吸入 MinGW。)
相反,您应该将 nodejs 安装目录添加到您的 MinGW shell $PATH 中,例如通过使用每个人都喜欢的 ~/.profile/~/.zprofile $PATH-munging 技巧:
# Append node.js to path
case ${PATH} in
  *"/c/program files/nodejs"*)
    ;;
  *)
    export PATH="$PATH:/c/program files/nodejs:"
    ;;
esac

您可能还需要进行一些配置,因为默认情况下Windows的npm将使用${APPDATA}/npm作为prefix${LOCALAPPDATA}/npm-cache作为cacheC:\Windows\system32\cmd.exe作为shell等。

# To view the full config including all defaults and overrides
npm config ls -l
# To view the active config for the specified environment
npm config list -L {global,user,project}

也许我只是有点困惑,但从配置文件显示/说明来看,设置prefix=在我的用户配置中甚至会覆盖本地安装(具体指使用npm install而不带--global,直接安装到当前目录的node_modules子目录的项目特定安装)。但经过测试,我很高兴地报告这并不是事实,因此覆盖内置的prefix=是安全的,可以在$HOME/.npmrc中进行设置。
无论您是否移动cache=,或者让它保留在C:\Users\<you>\AppData\Local\npm-cache\都取决于您。我相信它会以这种方式工作。(嗯,也许不适用于MSYS shell,但从MinGW应该没问题。)
还有一些我没有克服的小差异,但现在我想到的唯一一个是:
  1. npm help <command>打开浏览器窗口以HTML文档形式显示帮助文档,而不像在Linux上直接在终端中显示man页内容。(这是有道理的,因为我认为man页甚至没有在Windows上安装。尽管如此,仍然令人不安。)

0
您可以简单地安装nvm,然后通过它安装nodejs。在您的MSYS2 shell中运行以下命令下载和安装nvm,最好直接在这里复制下载命令,因为URL中的版本号将会改变。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash

或者

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash

然后运行以下命令在你的bash路径上设置nvm

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

运行这些命令后,您可以使用nvm install 16或任何您想要的Node主版本号。只需键入nvm即可获取可用命令列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接