Heroku推送问题:未找到Bower解析器

4

你知道什么是Javascript疲劳吗?

现在我知道了。

虽然我不是javascript开发人员,但我正在使用Node和Angular作为我的项目服务器。我的所有Node包都是使用npm安装的,而我的Angular包则是使用bower安装的。因为这是我学习的方式。我维护一个package.json和一个bower.json来安装所有东西。通常,我会做以下事情:

npm install
bower install

但是Heroku只安装npm包,所以解决方案是在package.json中包含一个post install脚本。

它工作得非常完美,除了一些不再维护的库(但这是另一个问题)。

非常完美,直到今天,当我被困在Heroku错误消息中时:

bower angular#*            ENORESOLVER Bower resolver not found: bower-npm-resolver

这是我的package.json文件:

{
  "name"            : "my-marvelous-app",
  "engines": {
    "node": "5.0.0",
    "npm": "3.3.6"
    },
  "main"            : "server.js",
  "dependencies"    : {
        "express"               : "4.5.x",
        "mongoose"              : "4.2.x",
        ...
        [a bunch of important packages...]
        ...
        "vorpal"                : "latest",
        "bower"                 : "1.7.x"
  },
  "scripts"         : {
    "postinstall": "./node_modules/bower/bin/bower install"
  }
}

还有我的 bower.json 文件

{
  "name": "my-marvelous-backoffice",
  "version": "1.0.0",
  "dependencies": {
    "angular"               : "latest",
    "angular-bootstrap"     : "latest",
    "angular-cookies"       : "latest",
    "angular-route"         : "latest",
    "bootstrap"             : "latest",
    "font-awesome"          : "latest"
  }
}

我不知道该怎么办。在我的本地机器上,npm install可以工作,但在Heroku上却不行。请不要建议我使用其他包管理器,比如yarn之类的东西,因为我是一名移动开发人员,我没有太多时间去学习另一个会在六个月内过时的炒作。对于这种恶性循环,我感到非常抱歉。(对JavaScript的疲劳感!) 编辑 最后,我找到了一个带有以下配置的.bowerrc文件。
{
    "directory": "public/libs",
    "resolvers": [
        "bower-npm-resolver"
    ]
}

我删除了resolvers条目,现在它可以正常工作。 然而,我不得不删除一些npm的Angular包...

1个回答

5

我也遇到了这个问题,这是我继承的一个项目。解决方案如下:

[sudo] npm install -g bower-npm-resolver

虽然在您的情况下,从您的 .bowerrc 文件中删除 "resolvers" 部分也可以工作,因为您的 bower.json 文件中没有以 npm: 前缀开头的依赖项。


谢谢你的回答。我不能在Heroku上使用npm -g,因为所有东西都必须在package.json中。如果我有一些npm:前缀,那么我应该直接在package.json中添加bower-npm-resolver吗? - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接