Назад | Перейти на главную страницу

npm install не работает должным образом через марионетку

У меня проблема с запуском npm install при использовании Puppet для настройки моего приложения.

Я использую Puppet для настройки приложения node.js, которое мы будем использовать вживую через несколько недель. Это приложение имеет sqlite3 в качестве зависимости. Проблема, с которой я сталкиваюсь, заключается в том, что при запуске 'npm install "зависимость sqlite3 должна быть скомпилирована из исходного кода для правильной работы. Однако правильная команда:

npm install --build-from-source=sqlite3

Не будет работать должным образом при использовании команды exec в Puppet. У меня есть код Puppet ниже:

exec { 'npm install --build-from-source=sqlite3' :
    cwd => '/var/video_server',
    user => 'root',
    path => '/usr/local/node/node-default/bin'
}

Как мне заставить sqlite3 правильно скомпилировать с помощью Puppet? Я не хочу запускать npm install вручную на каждом сервере, на котором я установил это приложение.

Кажется, ваш PATH недостаточно настроен.
Когда вы создаете модуль из исходного кода, npm придется запускать несколько команд, которые должны быть в вашем PATH.
Так что попробуйте это:

exec { 'npm install --build-from-source=sqlite3' :
    cwd => '/var/video_server',
    user => 'root',
    path => ['/usr/local/node/node-default/bin', '/bin', '/usr/bin']
}

Надеюсь, что это помогает вам.

Чтобы убедиться, что он работает, вы можете попробовать запустить его как root в /var/video_server :

PATH=/usr/local/node/node-default/bin:/bin:/usr/bin npm install --build-from-source=sqlite3