当前位置: 首页 > 面试题库 >

npm全局路径前缀

瞿和硕
2023-03-14
问题内容

我比以往更加谨慎,因为我npm对过去的行为感到困惑。

我在Mac上,并通过安装的node.js brew install node

现在,我想jslint.js在命令行中作为命令运行,jslint我发现完成此操作的规范方法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安装全局npm bin路径到路径?也许是的,但是zsh确实有一些事情弄糟了。我在哪里可以找到?
2)我应该这样做吗?(附加:/usr/local/share/npm/bin$PATH我底部的~/.zshrc

看来这不是正确的方法,因为如果以后再安装其他东西(使用Homebrew或其他工具),则需要将其附加到我的zsh启动脚本中以设置路径。我猜在这种特定情况下,这只是npm install -g在“适当”位置(例如/usr/local/bin可能)未正确建立符号链接的问题。

我认为我会做的是在/usr/local/bin遇到问题的任何程序中手动建立符号链接,对于我的目的,它应该足够好。

编辑 :我将在2019年对此进行更新,因为这个老问题很受欢迎,但就我个人的工作流程以及如何最好地安装节点并管理其各种依赖关系而言,现在已经过时了。

我现在的个人工作流程是使用从nodejs.org获得的安装程序在系统上安装node。实际上,我比自制软件包本身更信任此文件,因为它最了解如何管理文件。如果要将系统节点从8.10更改为10.15,无论是在Mac还是Windows上,只需从nodejs.org下载适用于OS的10.15的安装程序即可。根据我的经验,尝试升级通过自制程序安装的节点一直是比较困难的方法。

另外,要指出的最大问题是,强烈建议不要使用sudo,如我上面的jslint示例的npm安装中所示。我相当确定,决不能使用超级用户以任何方式来安装或自制软件包。不必要,这会导致文件许可问题!

此外,我推荐使用ESLint而不是jslint,并且多年来没有使用过jslint。


问题答案:

扩展您PATH的: ~~~~

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

这不是一个糟糕的主意。话虽如此,您不必这样做。

运行这个:

npm config get prefix

OS
X上的默认值为/usr/local,这意味着npm会将二进制文件符号链接到/usr/local/bin,该二进制文件应该已经在您的计算机上PATH(尤其是在使用Homebrew的情况下)。

所以:

  1. npm config set prefix /usr/local 如果还有其他事情,并且
  2. 不要sudo与npm一起使用!根据jslint docs,您应该能够npm install做到。

如果您将npm安装为sudo(sudo brew install),请尝试使用plain ol’重新安装它brew install。自制软件应该可以帮助您保持sudo自由。



 类似资料:
  • 问题内容: 我相信过去我发现了传递给它的选项,以使其输出用于(全局模块)的路径。有人知道这样的选择吗?还是使用其他任何获取全局路径前缀的方法? 我知道全局模块在我的计算机上的位置(),通常只需要花费几分钟就可以在其他计算机上找到全局模块:通常已正确配置,如果没有,那么找个办法解决问题。但是,是否存在某种快速的方法来说明其构建方式以及它用于全局模块的路径? 问题答案: 将返回路径。

  • 我在Symfony 4应用程序中找不到有关全局路由前缀的任何信息。我唯一发现的是用注释控制器。但我不使用注释,我需要所有控制器都具有相同的前缀。 现在我可以在S3中这样在文件: 但是S4是没有捆绑的,我不能做同样的事情——我必须创建一个我不需要的捆绑。 是否可以在Symfony 4中定义一个全局路由前缀,或者我将在每个根目录前添加前缀/创建一个自定义路由加载器,尤其是在YAML中配置路由时?

  • 本文向大家介绍ASP.NET Core MVC 配置全局路由前缀,包括了ASP.NET Core MVC 配置全局路由前缀的使用技巧和注意事项,需要的朋友参考一下 ASP.NET Core MVC 配置全局路由前缀 前言 大家好,今天给大家介绍一个 ASP.NET Core MVC 的一个新特性,给全局路由添加统一前缀。严格说其实不算是新特性,不过是Core MVC特有的。 应用背景 不知道大家在

  • 关于vue3全局自动导入组件的问题,浏览器打开组件总是报错文件路径不对 环境为vue3.2,webpack的配置 main.js 导入了全局导入的文件 ./lib/index.js的内容,组件.vue都在lib文件夹下,都有文件夹包裹.此处将component常量写死了路径,效果是正常的(未注释行代码的上一行).图片放在最底部.但如果用路径拼接,就会报错'Cannot find module ',

  • 我已经通过这种方式安装了webpack: 在包含的目录下运行后: