4

Я пытаюсь установить an npm package (markdown-pdf) как часть моей сборки Travis-CI, которая, как я считаю, несовместима со старыми версиями узла. На моей локальной машине я запускаю Node версии 0.10.36, и он работает здесь, поэтому я добавил, что, как я считаю, является приемлемым способом определения конкретной версии в верхней части моего файла .travis.yml (хотя я не понимаю что либо). Версия полного файла MCVE приведена ниже.Travis - Control Какая версия узла используется для установки NPM

language: node_js 
node_js: 
- "0.10" 
install: 
- sudo apt-get install npm 
- npm config set registry http://registry.npmjs.org/ 
- sudo npm install -g markdown-pdf 
script: 
- echo "stuff was installed." 

В верхней части журнала сборки, я вижу следующее, что, кажется, указывают, что мое изменение работали:

$ nvm install 0.10 
######################################################################## 100.0% 
Now using node v0.10.40 
$ node --version 
v0.10.40 
$ npm --version 
1.4.28 
$ nvm --version 
0.23.3 

Однако дальше журнал, когда Трэвис пытается выполнить sudo npm install -g markdown-pdf, журнал сообщает следующее. Обратите внимание, что это предполагает, что пакет может быть несовместим с установленной версией узла, а утверждает, что я использую Node v0.6.12.

$ sudo npm install -g markdown-pdf 
npm http GET http://registry.npmjs.org/markdown-pdf 
npm http 200 http://registry.npmjs.org/markdown-pdf 
npm ERR! Error: No compatible version found: markdown-pdf 
npm ERR! No valid targets found. 
npm ERR! Perhaps not compatible with your version of node? 
npm ERR!  at installTargetsError (/usr/share/npm/lib/cache.js:488:10) 
npm ERR!  at next_ (/usr/share/npm/lib/cache.js:438:17) 
npm ERR!  at next (/usr/share/npm/lib/cache.js:415:44) 
npm ERR!  at /usr/share/npm/lib/cache.js:408:5 
npm ERR!  at saved (/usr/share/npm/lib/utils/npm-registry-client/get.js:147:7) 
npm ERR!  at Object.oncomplete (/usr/lib/nodejs/graceful-fs.js:230:7) 
npm ERR! You may report this log at: 
npm ERR!  <http://bugs.debian.org/npm> 
npm ERR! or use 
npm ERR!  reportbug --attach /home/travis/build/ahemmeter/ahemmeter.github.io/npm-debug.log npm 
npm ERR! 
npm ERR! System Linux 2.6.32-042stab108.3 
npm ERR! command "node" "/usr/bin/npm" "install" "-g" "markdown-pdf" 
npm ERR! cwd /home/travis/build/ahemmeter/ahemmeter.github.io 
npm ERR! node -v v0.6.12 
npm ERR! npm -v 1.1.4 
npm ERR! message No compatible version found: markdown-pdf 
npm ERR! message No valid targets found. 
npm ERR! message Perhaps not compatible with your version of node? 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  /home/travis/build/ahemmeter/ahemmeter.github.io/npm-debug.log 
npm not ok 

Я думаю, что я предоставил достаточно информации, но вы также можете посмотреть на public build logs for the project и github repository это здание.

Я допустил ошибку в объявлении, какую версию узла использовать? Нужно ли мне (или мне делать) что-то подобное для npm, nvm и markdown-pdf? Как заставить npm-install использовать более новую версию узла, а не старую?

Обратите внимание, что я установил репозиторий для загрузки через HTTP вместо HTTPS. Когда я это сделал, сообщение об ошибке изменилось с «не удалось извлечь из реестра: markdown-pdf» на «Совместимая версия: markdown-pdf», которая казалась шагом в правильном направлении, поэтому я сохранил ее; однако я упоминаю это здесь, если есть вероятность, что это вызывает конфликт.

+0

Мне нужно использовать файл 'package.json'? это не предназначено для пакета узлов, я просто использую инструмент npm из командной строки. –

ответ

1

Чтобы указать зависимости при использовании node.js, travis, похоже, ожидает файл package.json. Вы также можете использовать это, чтобы указать версию пакета узла, которую вы хотите загрузить.

.travis.yml

language: node_js 
node_js: 
- "0.10" 
script: 
- echo "stuff was installed." 

package.json

{ 
    "name" : "ahemmeter.github.io", 
    "version" : "0.0.0", 
    "dependencies" : { 
    "markdown-pdf" : "5.3.x" 
    } 
} 

Примечание от OP: Это ответ, который я нашел, но если кто-то отправляет ответ, который не используйте файл package.json (это всего лишь тестовый набор, а не пакет, и я не хочу публиковать его как пакет). Я помечаю этот ответ как принятый.

Смежные вопросы