当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 如何使用Chef安装nodejs和npm,以便root之外的用户可以使用它

来源:互联网 收集:自由互联 发布时间:2021-06-16
太好了,所以我已经在Chef上安装了node和npm.但我不能使用它,除非我是root用户,因为Chef以root身份做所有事情,显然npm不知道如何处理.文档没有说明如何处理这个问题,而且我看到的其他任何
太好了,所以我已经在Chef上安装了node和npm.但我不能使用它,除非我是root用户,因为Chef以root身份做所有事情,显然npm不知道如何处理.文档没有说明如何处理这个问题,而且我看到的其他任何地方都建议更改〜/ .npm的权限(这意味着要更改root用户〜/ .npm的权限),这感觉非常错误.

允许盒子上的所有用户使用npm而不会遇到大量错误的正确安装过程是什么:

npm ERR! Error: Attempt to unlock selenium-webdriver@^2.44.0, which hasn't been locked
首先让我确保我正确理解你的场景

>您已安装Node.js.
>您已安装NPM
>您已经制定了Node.js项目并希望使用NPM(在package.json中定义的那些)安装其依赖项

如果我在那里正确理解你,那么你将需要调用npm命令作为目标用户,并将当前工作目录设置为package.json文件所在的项目目录.

您可以使用执行块执行此操作,但您需要找到一种方法来定义它应该执行的时间.根据您的部署的细粒度,您可以将其基于package.json更改,例如:

cookbook_file 'package.json' do
  source 'package.json'
  notifies :run, 'execute[npm_install]', :immediately
end

execute 'npm_install' do
  command 'npm install'
  user 'nodejs'
  cwd '/opt/nodejs/myapp/'
  action :nothing
end

这样,只要你的package.json文件发生变化,它就会重新运行npm install命令,但不会这样,因此连续运行是安全的.

执行资源是少数不是幂等的资源之一

在这种情况下,该进程将作为nodejs用户生成(必须在执行时存在),因此任何前往〜/ .npm的资源都将转到/home/nodejs/.npm并且应由该用户拥有并且小组.

如果您无法以受限用户身份运行npm命令,只要您具有相应的权限,就可以在命令中添加sudo以允许npm install作为受限用户运行,具有提升

编辑:我刚刚注意到这个问题是两年了….

网友评论