2012-11-11 40 views
6

Tôi có biểu hiện sau:Vagrant, Múa rối và nodejs mô-đun: ném lỗi trên cài đặt mô-đun NPM

include nodejs 

package { 'serve': 
    ensure => latest, 
    provider => 'npm', 
} 

Tôi đang sử dụng puppetlab Node.js mô-đun:

http://forge.puppetlabs.com/puppetlabs/nodejs

Vagrantfile:

Vagrant::Config.run do |config| 
    config.vm.box = "precise64" 
    config.vm.box_url = "http://files.vagrantup.com/precise64.box" 

    config.vm.provision :puppet do |puppet| 
    puppet.manifests_path = '~/work/environments/default/' 
    puppet.manifest_file = 'site.pp' 
    puppet.module_path = '~/work/environments/default/modules' 
    end 

end 

Khi tôi chạy vagrant up Tôi nhận được lỗi sau:

[default] Running provisioner: Vagrant::Provisioners::Puppet... 
[default] Running Puppet with /tmp/vagrant-puppet/manifests/site.pp... 
stdin: is not a tty 
err: /Stage[main]//Package[serve]/ensure: change from absent to latest failed: Could not update: Got nil value for ensure at /tmp/vagrant-puppet/manifests/site.pp:6 
notice: /Stage[main]/Nodejs/Package[nodejs]/ensure: ensure changed 'purged' to 'present' 
notice: /Stage[main]/Nodejs/Package[npm]/ensure: ensure changed 'purged' to 'present' 
notice: Finished catalog run in 14.89 seconds 

Lúc đầu, tôi nghĩ có lẽ nó đang cố gắng để cài đặt 'phục vụ' mô-đun trước NPM cài đặt vì vậy tôi cố gắng require => Package[npm] nhưng điều đó đã cho kết quả tương tự.

Vì vậy, ai cũng có thể chiếu sáng một số lý do tại sao nó không cài đặt mô-đun 'phục vụ'?

Trả lời

8

Có vẻ như đang đặt hàng - nhà cung cấp cần có lệnh npm mà bạn chưa có.

Hãy thử thay đổi biểu hiện của bạn để một cái gì đó như:

class { 'nodejs': } -> package { 'serve': ensure => present, provider => 'npm', } 

cách khác, có thể là:

include nodejs 

package { 'serve': 
    ensure => present, 
    provider => 'npm', 
    require => Package['npm'], 
} 
+0

Bạn có thể yêu cầu Gói ['npm'] bằng cách nào? Nó dường như không được xác định ("không thể tìm thấy gói phụ thuộc [npm]") – Karan

+0

Bạn có thể làm "require => Class ['nodejs']," –

11

tôi chạy qua đây cũng - có vẻ với tôi như puppetlabs-nodejs mô-đun không thực sự chấp nhận ensure => latest, trái với tài liệu. Sự cố của tôi đã được khắc phục khi tôi đổi thành ensure => present và mã cũng hỗ trợ các phiên bản cụ thể cũng như ví dụ như .

+0

Đúng, đây là câu trả lời đúng! –

+0

Có một yêu cầu kéo mở để sửa lỗi này, nhưng hiện tại nó không xây dựng Travis nếu ai đó muốn giúp sửa lỗi đó: https://github.com/puppetlabs/puppetlabs-nodejs/pull/78 – ScottSB

Các vấn đề liên quan