node.js - Chef 安装 Node 、npm 和包并运行它们

标签 node.js npm chef-infra

我正在通过“nodejs” Recipe 安装 Node 和 npm,并且我通过

包含配方
include_recipe "nodejs::npm"

我已经安装了我想要的软件包,如下所示:

%w( dateformat aws2js optparse cloudwatch2graphite).each do |npm_package|
    nodejs_npm npm_package
end

Chef 说它已成功安装它们。

当我登录到盒子并输入 npm list 时,无论我是用户 root 还是用户 vagrant,它都会返回空。

为什么包列表是空的?是用户上下文问题吗?

其次,如何运行全局安装的软件包,例如cloudwatch2graphite

当它作为全局包安装时,我就这样做

node cw2graphite.js

从任何地方让它运行?

奖励积分:

出于好奇,chef 在 vagrant 和 box 上都以什么用户身份运行?

最佳答案

经过一番摸索,我意识到我做错了什么。

使用 npm 来对全局包做任何事情,你必须使用 -g 事后看来这是显而易见的,但我不太喜欢 Node ,所以这是一个很容易犯的错误。

所以要列出全局包:

npm -g list

但是,在运行脚本时您应该执行以下操作:

npm -g run <package-name> <package-script>

当我尝试使用它来启动 cloudwatch2graphite 时,没有任何反应。

也就是说,我可以通过执行以下操作来使其工作:

node `npm -g root`/<package-name>/<script-name>.js

关于node.js - Chef 安装 Node 、npm 和包并运行它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28547218/

相关文章:

node.js - 在nodejs中将curl命令转换为request-promise命令时遇到问题

node.js - Elastic beanstalk 上的 npm install 报告没有错误,但缺少依赖项

node.js - 是否可以在 `npm start` 上的不同 url 上提供 React 应用程序

linux - 我们可以通过 Chef 中的 Recipe 合并 JAVA_OPTS 变量吗?

ruby - Windows 中的 `gem install berkshelf` 失败

ruby-on-rails - 从 Heroku Rails 应用程序运行 Node

javascript - JavaScript 环境中的安全 ID

node.js - 使用 LESS 和 JADE 的 JWPlayer 的响应式高度元素

node.js - npm 安装失败 gatsby 开发博客

linux - 阻止 Chef 在 Ubuntu 14.04 中运行 bash 命令两次