" EMALFORMED无法阅读bower.json" on" bower install requirejs-text"

时间:2014-04-06 06:22:03

标签: javascript requirejs bower

当我尝试安装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                       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

仍然没有解释什么是错误的。

3 个答案:

答案 0 :(得分:31)

您的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": {}
}

答案 1 :(得分:12)

[UPDATE]

路易斯的答案可能是正确的答案!我正在让我参考,但对于特定情况的OP案例可能不正确。

[INITIAL ANSWER]

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

然后bower抱怨它,因为它无法读取它(EMALFORMED) - 这是非常准确的,如果不是真正有用的问题是什么。

解决方案:使用不太糟糕的文本编辑器(并且不添加BOM)从头开始使用bower.json文件。

对于同一案例中的其他人,请参阅herehere

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

答案 2 :(得分:-1)

我的解决方案中的.bower.json文件出现了类似的错误,由于某种原因,该文件的内容在自动化过程中被删除了。我能够删除该文件并从源代码控制中取回它,这解决了我的问题。