Node.js Travis-控制用于NPM安装的节点版本

Node.js Travis-控制用于NPM安装的节点版本,node.js,npm,continuous-integration,build-process,travis-ci,Node.js,Npm,Continuous Integration,Build Process,Travis Ci,我正在尝试安装(markdown pdf)作为我的Travis CI构建的一部分,我认为它与Node的旧版本不兼容。在我的本地机器上,我运行的是Node版本0.10.36,它在这里工作,因此我在.travis.yml文件的顶部添加了我认为可以接受的定义特定版本的方法(尽管我对此也不清楚)。完整文件的MCVE版本如下所示 language: node_js node_js: - "0.10" install: - sudo apt-get install npm - npm config set

我正在尝试安装(markdown pdf)作为我的Travis CI构建的一部分,我认为它与Node的旧版本不兼容。在我的本地机器上,我运行的是Node版本0.10.36,它在这里工作,因此我在
.travis.yml
文件的顶部添加了我认为可以接受的定义特定版本的方法(尽管我对此也不清楚)。完整文件的MCVE版本如下所示

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
$sudo npm安装-g降价pdf
npm http GEThttp://registry.npmjs.org/markdown-pdf
npm http 200http://registry.npmjs.org/markdown-pdf
npm错误!错误:找不到兼容版本:markdown pdf
npm错误!找不到有效的目标。
npm错误!可能与您的节点版本不兼容?
npm错误!installTargetsError(/usr/share/npm/lib/cache.js:488:10)
npm错误!在下一次会议上(/usr/share/npm/lib/cache.js:438:17)
npm错误!下一步(/usr/share/npm/lib/cache.js:415:44)
npm错误!在/usr/share/npm/lib/cache.js:408:5
npm错误!保存时(/usr/share/npm/lib/utils/npm registry client/get.js:147:7)
npm错误!在Object.oncomplete(/usr/lib/nodejs/fs.js:230:7)
npm错误!您可以在以下位置报告此日志:
npm错误!
npm错误!或使用
npm错误!reportbug--attach/home/travis/build/ahemmeter/ahemmeter.github.io/npm-debug.log npm
npm错误!
npm错误!系统Linux 2.6.32-042stab108.3
npm错误!命令“node”“/usr/bin/npm”“install”“-g”“markdown pdf”
npm错误!cwd/home/travis/build/ahemmeter/ahemmeter.github.io
npm错误!节点-v v0.6.12
npm错误!npm-V1.1.4
npm错误!消息未找到兼容版本:markdown pdf
npm错误!消息未找到有效的目标。
npm错误!消息可能与您的节点版本不兼容?
npm错误!
npm错误!其他日志记录详细信息可在以下位置找到:
npm错误/home/travis/build/ahemmeter/ahemmeter.github.io/npm-debug.log
npm不好
我想我已经提供了足够的信息,但是你也可以看看它和它的建筑

我在声明要使用哪个版本的节点时是否犯了错误?我是否需要(或应该)为npm、nvm和markdown pdf做类似的事情?如何强制npm安装使用较新版本的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
文件(这只是一个测试套件,而不是一个包,我不想将其发布为一个包),我会将该答案标记为已接受。

我需要使用
package.json
文件吗?这不是一个节点包,我只是使用命令行中的一个npm工具。我在这里使用了答案,它起了作用: