Bower – 安装包时出错“path.join的参数必须是string”

我刚刚创build了一个节点项目,并试图使用bower安装jquery。

bower install jquery 

我得到以下错误:

 bower jquery#* not-cached git://github.com/jquery/jquery.git#* bower jquery#* resolve git://github.com/jquery/jquery.git#* bower jquery#* error Arguments to path.join must be strings Stack trace: TypeError: Arguments to path.join must be strings at f (path.js:204:15) at Object.filter (native) at Object.exports.join (path.js:209:40) at GitHubResolver._checkout (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\lib\core\resolvers\GitHubResolver.js:54:21) at C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\lib\core\resolvers\GitResolver.js:69:21 at _fulfilled (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\p-throttler\node_modules\q\q.js:798:54) at self.promiseDispatch.done (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\p-throttler\node_modules\q\q.js:827:30) at Promise.promise.promiseDispatch (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\p-throttler\node_modules\q\q.js:760:13) at C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\p-throttler\node_modules\q\q.js:574:44 at flush (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\p-throttler\node_modules\q\q.js:108:17) Console trace: Trace at StandardRenderer.error (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\lib\renderers\StandardRenderer.js:72:17) at Logger.<anonymous> (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\bin\bower:111:22) at Logger.emit (events.js:95:17) at Logger.emit (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\bower-logger\lib\Logger.js:29:39) at C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\lib\commands\index.js:40:20 at _rejected (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\q\q.js:797:24) at C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\q\q.js:823:30 at Promise.when (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\q\q.js:1035:31) at Promise.promise.promiseDispatch (C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\q\q.js:741:41) at C:\Users\Adam\AppData\Roaming\npm\node_modules\bower\node_modules\q\q.js:557:44 System info: Bower version: 1.3.7 Node version: 0.10.29 OS: Windows_NT 6.2.9200 x64 

我试过安装其他软件包,他们失败了相同的错误。 就我所知,我有一个漂亮的香草设置。 运行Windows 8.1 x64。 似乎无法find相关的信息,为什么我得到这个错误。

修复: 清除caching并更新到Bower 1.3.8 。

这是怎么回事:

tmp包更新了它的API,除了目录名之外,还返回一个清理callback。 Q然后将callback的两个参数压缩到一个数组中,而bower只需要一个string作为目录名称。

这会导致出现“TypeError:path.join的参数必须是string”错误,因为各个点试图使用_tempDir值(现在是一个数组)join到一个path中。

semver ftw!

对于还在遇到这个问题的其他人来说,这对我来说是个诡计:

 bower cache clean 

对我来说, npm install -update bower是不够的。

我需要通过明确的指定来安装版本:

sudo npm install -q bower@1.3.8

是的,我必须用sudo来运行。