【问题标题】:"EMALFORMED Failed to read bower.json" on "bower install requirejs-text"“bower install requirejs-text”上的“EMALFORMED 无法读取 bower.json”
【发布时间】:2014-05-18 09:55:47
【问题描述】:

当我尝试安装 requirejs-text 时,我收到了一个我无法理解的错误。

$ bower install requirejs-text
bower                       EMALFORMED Failed to read /Users/bgolder/projects/explorer/front/bower.json

Additional error details:
Unexpected string

在 bower.json 中,我看不出有什么问题。

{
  "name": "front",
  "version": "0.0.0",
  "dependencies": {
    "bootstrap": "~3.1.1"
    "jquery": "~1.10.2",
    "requirejs": "~2.1.9",
    "requirejs-text": "~2.0.10",
    "underscore": "~1.5.2",
    "backbone": "~1.1.0",
    "modernizr": "~2.6.2"
  },
  "devDependencies": {},
}

如果我在 bower 上使用详细选项,我会得到这个跟踪。

bower                       EMALFORMED Failed to read /Users/bgolder/projects/explorer/front/bower.json

Additional error details:
Unexpected string

Stack trace:
SyntaxError: Unexpected string
    at Object.parse (native)
    at /usr/local/lib/node_modules/bower/node_modules/bower-json/lib/json.js:41:29
    at fs.js:266:14
    at /usr/local/lib/node_modules/bower/node_modules/graceful-fs/graceful-fs.js:104:5
    at Object.oncomplete (fs.js:107:15)
From previous event:
    at readJson (/usr/local/lib/node_modules/bower/lib/util/readJson.js:17:6)
    at Project._readJson (/usr/local/lib/node_modules/bower/lib/core/Project.js:539:25)
    at Project._analyse (/usr/local/lib/node_modules/bower/lib/core/Project.js:445:14)
    at Project.install (/usr/local/lib/node_modules/bower/lib/core/Project.js:47:17)

Console trace:
Trace
    at StandardRenderer.error (/usr/local/lib/node_modules/bower/lib/renderers/StandardRenderer.js:74:17)
    at Logger.<anonymous> (/usr/local/lib/node_modules/bower/bin/bower:114:22)
    at Logger.EventEmitter.emit (events.js:95:17)
    at Logger.emit (/usr/local/lib/node_modules/bower/node_modules/bower-logger/lib/Logger.js:29:39)
    at /usr/local/lib/node_modules/bower/lib/commands/install.js:35:16
    at _rejected (/usr/local/lib/node_modules/bower/node_modules/q/q.js:797:24)
    at /usr/local/lib/node_modules/bower/node_modules/q/q.js:823:30
    at Promise.when (/usr/local/lib/node_modules/bower/node_modules/q/q.js:1035:31)
    at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/bower/node_modules/q/q.js:741:41)
    at /usr/local/lib/node_modules/bower/node_modules/q/q.js:557:44

System info:
Bower version: 1.3.1
Node version: 0.10.26
OS: Darwin 13.1.0 x64

这仍然无法解释问题所在。

【问题讨论】:

    标签: javascript requirejs bower


    【解决方案1】:

    您的 JSON 文件中有两个语法错误。第一个错误是在"bootstrap": "~3.1.1" 之后缺少,。这就是您收到错误消息的原因。下一行的"jquery" 字符串不是预期的。我通过肉眼检查您的文件发现了这个错误。在 JavaScript 或 JSON 编辑器中加载它也会显示出来。

    第二个错误是{} 后面的逗号。 JavaScript 解析器不会有问题,但 JSON 解析器会。我想 JSON 编辑器会发现这个问题。我是根据收到的新错误消息和反复试验发现的。

    这是固定文件:

    {
      "name": "front",
      "version": "0.0.0",
      "dependencies": {
        "bootstrap": "~3.1.1",
        "jquery": "~1.10.2",
        "requirejs": "~2.1.9",
        "requirejs-text": "~2.0.10",
        "underscore": "~1.5.2",
        "backbone": "~1.1.0",
        "modernizr": "~2.6.2"
      },
      "devDependencies": {}
    }
    

    【讨论】:

    • 谢谢。我不敢相信我没有看到。
    • 是的,如果你在周围乱排,你必须小心。一直发生在我身上。
    • 我建议您在遇到问题时使用网站jsonlint.com 检查您的 json 配置文件。
    • 对于所有使用 Visual Studio 的人,只需使用“unicode(UTF-8 without Signature) - Codepage 65001”保存文件。这可以在文件菜单的高级保存选项中更改
    【解决方案2】:

    [更新]

    Louis 的答案很可能是正确的!我让我的参考,但对于 OP 的具体情况可能不正确。

    [初始答案]

    您在 Windows 上,并且正在使用文本编辑器在编辑 bower.json 文件时将 BOM 添加到它。

    然后 bower 抱怨它,因为它无法读取它(EMALFORMED) - 这是非常准确的,如果对问题所在没有真正帮助的话。

    解决方案:从头开始创建 bower.json 文件,使用不会出错(并且不会添加 BOM)的文本编辑器。

    请参阅herehere,以了解与此情况相同的其他人。

    (这与 requirejs-text 无关 - 它是 your bower.json 格式错误的文件)

    【讨论】:

    • 还是很好的答案,救了我。
    【解决方案3】:

    我的解决方案中的 .bower.json 文件出现类似错误,并且由于某种原因,该文件的内容已在自动化过程中被删除。我能够删除该文件并将其从源代码管理中拉回,从而解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 2014-12-03
      • 2017-11-23
      • 1970-01-01
      相关资源
      最近更新 更多