node.js - 使用 nvm 时管理全局 npm 包

标签 node.js npm

我觉得我需要能够将全局 npm 包单独安装到 NVM 目录中。

$ nvm install v0.11
######################################################################## 100.0%
Now using node v0.11.16
$ node-inspector
Node Inspector v0.9.2
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.

我的 Node 检查器停止工作!

$ npm update -g
<bunch of updating, succeeds>

也许这会有所帮助...不!还是坏了。 叹。也许...... Node 检查器不适用于 v0.11.16(在 nvm 上运行)。也许。谁知道。好吧,该中止了。

$ nvm use system
Now using system version of node: v0.10.32.
$ node-inspector --version
dyld: lazy symbol binding failed: Symbol not found: _node_module_register
  Referenced from: /usr/local/lib/node_modules/node-inspector/node_modules/ws/build/Release/bufferutil.node
  Expected in: dynamic lookup

dyld: Symbol not found: _node_module_register
  Referenced from: /usr/local/lib/node_modules/node-inspector/node_modules/ws/build/Release/bufferutil.node
  Expected in: dynamic lookup

[1]    93845 trace trap  node-inspector --version

好吧....好吧....该死。

因此,无论如何,目前我不是在寻找有关如何修复的说明。我很可能会被冲洗掉。这里的主要问题是我应该怎么做来管理这些 npm 包,这些包是命令行工具,并且已经编译了看起来与特定版本相关的组件?我了解当我安装 nvm 并将其合并到我的系统中时,我的 shell 能够切换它的 $PATH这样当我调用 nodenpm ,它们将使用我选择的 Node 版本运行。

但似乎全局 npm 包被放入 /usr/local/bin/在某个地方,他们只是被困在那里,无法理解我对 nvm 所做的事情-- 虽然“理论上表现良好的 Node 包”可能并非如此,但在实践中(至少对于 node-inspector 之类的东西),当不使用安装它的 Node 执行时,它确实看起来很容易爆炸.

在此期间,我基本上必须 npm remove -g <package> && npm install -g <package>我发现的任何包都以这种方式表现得很奇怪,每次我想使用 nvm 在新 Node 版本下运行该包时.

这似乎是错误的。

错了吗?

而且,由此产生的一个必然结果是,每次我调用 nvm powers 以使用不同版本的 Node 测试某些给定的 node.js 应用程序时,我几乎应该通过将它克隆到一个全新的目录并重新开始来做到这一点, 因为否则我可能会发现我需要 rm -rf node_modules && npm install只是为了让它发挥作用......

最佳答案

2020 年 10 月更新:

如果您已经安装了所需的 Node 版本,根据文档,这也是可用的:

nvm reinstall-packages <from-version>

Prop @rashi用于指出上面的语法。


来自 nvm 帮助消息:

nvm install [-s] <version>                Download and install a <version>, [-s] from source. Uses .nvmrc if available
    --reinstall-packages-from=<version>     When installing, reinstall packages installed in <node|iojs|node version number>
    --lts                                   When installing, only select from LTS (long-term support) versions
    --lts=<LTS name>                        When installing, only select from versions for a specific LTS line

相关标志是--reinstall-packages-from=<version> .只需重新运行您的命令(示例):

$ nvm install v6.9.2 --reinstall-packages-from=v4.4.5

关于node.js - 使用 nvm 时管理全局 npm 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023792/

相关文章:

json - 使用 `npm update`时如何更新package.json中的所有包版本号?

javascript - $http.get Angular 和 Node 错误

node.js - Azure Active Directory 将自定义数据添加到 Oauth2 token

linux - 在运行 Angular 2 快速入门时解决或修复 Linux 上的 NPM lite-server 错误

node.js - JShint 不工作

javascript - NPM 搜索远程包

javascript - Node.js/Express - 如何设置响应字符编码?

node.js - 从同一模块调用的 stub 模块函数

node.js - 如何使用 nginx 设置 HttpOnly 响应 header ?

node.js - 找不到 grpc@1.10.1 和 node@10.9.0 的预构建二进制文件