我试图安装 an npm package(markdown-pdf)作为我的Travis-CI构建的一部分,我认为这与旧版本的Node不兼容.在我的本地机器上,我运行节点版本0.10.36,它在这里工作,所以我添加了我认为是在.travis.y
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
但是,在日志中,当travis尝试执行sudo npm install -g markdown-pdf时,日志会报告以下内容.请注意,它表明程序包可能与安装的Node版本不兼容,并声称我使用的是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.
我在声明要使用哪个版本的Node时犯了错误吗?我是否需要(或应该)为npm,nvm和markdown-pdf做类似的事情?如何强制npm-install使用较新版本的Node而不是旧版本?
请注意,我将存储库设置为通过HTTP而不是HTTPS下载.当我这样做时,错误消息从“未能从注册表中获取:markdown-pdf”更改为“找不到兼容版本:markdown-pdf”,这似乎是朝着正确方向迈出的一步,所以我保留了它;但是,我在这里提到它,以防它可能导致冲突.
为了在使用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文件的答案(这只是一个测试套件而不是一个软件包,我不想将它作为一个软件包发布),我会将答案标记为已接受.