我比往常更加谨慎,因为我对过go npm人的行为感到困惑.

我在Mac上安装了node.从js到brew install node.

现在我想在命令行上以命令jslint的形式运行jslint.js,我发现实现这一点的标准方法是sudo npm install -g jslint,它使用以下输出成功运行:

$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)

随后

$ jslint ply.js
zsh: command not found: jslint

因为/usr/local/share/npm/bin不在我的$PATH.

1) 为什么brew没有安装global npm bin path to path?也许是的,但zsh做的事情把事情搞砸了.我在哪里能找到

这似乎不是正确的方法,因为如果我以后安装其他东西(使用brew 或其他东西),我需要将其附加到我的zsh启动脚本以设置路径.我猜在这个特殊的例子中,这只是npm install -g个没有在一个"正确"的位置制作正确的符号链接的问题(比如/usr/local/bin).

我想我将要做的是手动在/usr/local/bin中为任何我有问题的程序构建符号链接,它应该足够好,满足我的目的.

EDIT:我在2019年更新了这个问题,因为这个老问题很流行,但现在在我的个人工作流程以及如何最好地安装 node 和管理其各种依赖项方面都过时了.

我的个人工作流程现在是使用从nodejs获得的安装程序.组织在系统上安装 node .实际上,我更相信这一点,而不是brew 软件包本身,因为它最了解如何管理文件.如果您想将系统 node 从8.10更改为10.15,无论是在Mac还是Windows上,只需从nodejs下载安装程序即可.为你的操作系统组织10.15.根据我的经验,try 升级通过brew 软件安装的 node 一直被证明是一种更困难的方法.

此外,需要指出的最大一点是,我在上面的jslint示例的npm安装中所示的sudo的使用是非常不鼓励的;我相当确定,绝不应该使用超级用户安装brew 软件包,或以任何方式与之交互.这是不必要的,而且会导致文件权限问题!

此外,我推荐ESLint而不是jslint,而且我已经多年没有使用jslint了.

推荐答案

Extending your PATH with:

export PATH=/usr/local/share/npm/bin:$PATH

这不是个糟糕的主意.话虽如此,你不应该这么做.

运行以下命令:

npm config get prefix

OS X上的默认值是/usr/local,这意味着npm将把二进制文件符号链接到/usr/local/bin,而/usr/local/bin应该已经在您的PATH上了(尤其是如果您使用的是brew 软件).

所以:

  1. 如果是别的什么,npm config set prefix /usr/local美元,还有
  2. 不要在npm中使用sudo!根据jslint docs分,你应该只需要把它改成npm install分.

如果你把npm安装成sudo(sudo brew install),试着用普通的ol'brew install重新安装.brew 咖啡应该能让你保持自由.

Node.js相关问答推荐

如何使用Express正确跟踪服务器应用程序上的所有传出的Node.js请求

node 模块错误:类型参数OT具有循环约束''

NPM:无法导入本码模块

如何呈现ejs.renderFile中包含的子模板?

如何修复PostgreSQL和NodeJS/NestJS应用程序之间的日期时间和时区问题?

在对象的嵌套数组中使用$lookup,创建多个记录作为响应,mongodb

我的 MERN 网站一直告诉我我的一个函数不是一个函数

当API返回400状态代码时,使用Reactjs fetch获取错误消息

如何在 require 方法中使用路径与node.js react ?

如何从mongoose 对象内嵌套的数组中提取数组元素?

Solidity 将数据位置从内存更改为存储

Angular Build 生产返回致命的 javascript 无效大小错误

登录用户并获取他们的个人资料

try 在 NodeJS 项目中实现 SimplePay (OTP) 支付网关,但我无法获得与技术文档中相同的签名

如何删除mongodb中嵌套数组中所有出现的数组元素

如何使用 node 在 koa.js 中发送响应

为什么当我try req.logout() 时出现此错误?

您如何写入 aws lambda 实例的文件系统?

如何在 Joi 字符串验证中使用枚举值

为什么 Node 控制台不显示功能代码?