Node.js

出自 ArchWiki

此条目或章节的事实准确性存在争议。

理由:以 root 身份运行外部包管理器(此处为 npm)会与 pacman 冲突 (在 Talk:Node.js 中讨论)

Node.js 是一个 JavaScript 运行时环境,结合了有用的Node.js 使用 Google V8 引擎在 web 浏览器之外执行代码。由于其事件驱动、非阻塞 I/O 模型,它适用于实时 web 应用程序。

安装

安装 nodejs 软件包。也有长期支持 (LTS) 版本

Node 版本管理器

需要或希望在不同版本的 Node.js 中工作是很常见的。Node.js 用户首选的方法是使用 Node 版本管理器 (nvmAUR),它允许廉价且简单的替代安装。您可以通过将其添加到您的 命令行 shell#配置文件 中来设置 nvm

. /usr/share/nvm/init-nvm.sh

用法在项目的 GitHub 上有详细文档,但很简单,如下所示

$ nvm install 8.0
Downloading and installing node v8.0.0...
[..]

$ nvm use 8.0
Now using node v8.0.0 (npm v5.0.0)
提示: 如果您决定使用 nvmAUR,以前建议使用 AUR 中的 nodejs-fake 软件包,但现在已删除。建议的方法是按照 pacman(8) § TRANSACTION OPTIONS (APPLY TO -S, -R AND -U) 手册的说明,使用 --assume-installed nodejs=<version>

如果您想在目录中每次有 .nvmrc 文件时自动运行 nvm use,请将其添加到 shell 初始化文件 中。

Node 包管理器

npm 是 Node.js 的官方包管理器。可以使用 npm 软件包安装

使用 npm 管理软件包

安装软件包

此条目或章节正在考虑移除。

理由:重复和不良实践,请查看编辑页面以获取更多信息 (在 Talk:Node.js 中讨论)

可以使用以下命令安装任何软件包

$ npm install packageName

此命令将软件包安装在当前目录的 node_modules 下,并将可执行文件安装在 node_modules/.bin 下。

对于系统范围的安装,可以使用全局开关 -g

# npm -g install packageName

默认情况下,此命令将软件包安装在 /usr/lib/node_modules/npm 下,并且需要 root 权限才能执行此操作。(如果使用像 umask 0077 这样的安全 umask,您将需要为软件包设置一个宽松的 sudo umask 才能使用。)

允许用户级安装

要允许当前用户全局软件包安装,请设置 npm_config_prefix 环境变量npmyarn 都使用它。

~/.profile
PATH="$HOME/.local/bin:$PATH"
export npm_config_prefix="$HOME/.local"

重新登录或 source 以更新更改。

注意: 一旦您全局安装软件包,binlib 目录将在您的 prefix 目录中自动创建。

您也可以为 npm install 指定 --prefix 参数。但是,不建议这样做,因为您每次安装全局软件包时都需要添加它。

$ npm -g install packageName --prefix ~/.local

另一种选择是在 $HOME/.npmrc 中设置 prefix 字段。这与在 .profile 中使用 npm_config_prefix="$HOME/.local" 效果相同

$ npm set prefix="$HOME/.local"
注意: 最后一种方法仅适用于 npm

更新软件包

更新软件包非常简单,只需

$ npm update packageName

对于全局安装的软件包 (-g) 的情况

# npm update -g packageName
注意: 请记住,除非 prefix 设置为用户可写目录,否则全局安装的软件包需要管理员权限
更新所有软件包

但是,有时您可能只想更新所有软件包,无论是本地还是全局的。省略 packageName 后,npm 将尝试更新所有软件包

$ npm update

或添加 -g 标志以更新全局安装的软件包

# npm update -g

移除软件包

要移除使用 -g 开关安装的软件包,只需使用

# npm -g uninstall packageName
注意: 请记住,全局安装的软件包需要管理员权限

要移除本地软件包,请删除开关并运行

$ npm uninstall packageName

列出软件包

要显示全局安装软件包的树状视图,请使用

$ npm -g list

这棵树通常很深。要仅显示顶层软件包,请使用

$ npm list --depth=0

要显示可能需要更新的过时软件包

$ npm outdated

使用 pacman 管理软件包

一些 Node.js 软件包可以在 Arch 用户仓库 (AUR) 中找到,名称为 nodejs-package_name

请参阅 Node.js 软件包指南,了解为 AUR 打包 Node.js 软件包的最佳实践。

故障排除

npm help 不显示文档

使用 npm help topic 可能不会显示 topic 的文档。请改用 man npm-topic。例如

$ npm help install
Top hits for "install"
...
$ man npm-install
... shows the documentation for the npm install subcommand

这是 Arch 的 npm 软件包的一个错误

node-gyp 错误

如果出现类似 gyp WARN EACCES user "root" does not have permission to access the ... dir 这样的错误,--unsafe-perm 选项可能会有所帮助

# npm install --unsafe-perm -g node-inspector

找不到模块 ... 错误

自 npm 5.x.x 版本起,package-lock.json 文件与 package.json 文件一起生成。当这两个文件引用不同的软件包版本时,可能会出现冲突。解决此问题的一种临时方法是

$ rm package-lock.json
$ npm install

但是,在 npm 5.1.0 或更高版本之后进行了修复。有关更多信息,请参阅:missing dependencies

参见