关于node.js:尝试注册bower.json文件时出现EMALFORMED错误

EMALFORMED error when trying to register bower.json file

我在Bower注册我的bower.json文件时遇到了麻烦。 任何帮助将不胜感激。

当我尝试在Bower注册我的项目时

1
bower register jsnlog git://github.com/mperdeck/jsnlog.js.git -V

我收到错误消息:

1
2
3
4
5
bower jsnlog#*              EMALFORMED Failed to read C:\Users\mperdeck\AppData\Local\Temp\mperdeck-PC-mperdeck\bower\js
nlog-6944-x00dtF\bower.json

Additional error details:
Unexpected token ?

我的bower.json的内容很简单(为了解决问题,我摆脱了空格和换行符):

1
{"name":"jsnlog.js","main":"jsnlog.js","version":"2.4.3"}

(请注意,该文件中没有?)

以下是我运行bower寄存器时屏幕上显示的详细信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
PS D:\dev\jsnlog\jsnlog.js> bower register jsnlog git://github.com/mperdeck/jsnlog.js.git -V
bower jsnlog#*                 resolve git://github.com/mperdeck/jsnlog.js.git#*
bower jsnlog#*                download https://github.com/mperdeck/jsnlog.js/archive/2.4.3.tar.gz
bower jsnlog#*                 extract archive.tar.gz
bower jsnlog#*              EMALFORMED Failed to read C:\Users\mperdeck\AppData\Local\Temp\mperdeck-PC-mperdeck\bower\js
nlog-6944-x00dtF\bower.json

Additional error details:
Unexpected token ?

Stack trace:
SyntaxError: Unexpected token ?
    at Object.parse (native)
    at C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower
ode_modules\bower-json\lib\json.js:41:29
    at fs.js:266:14
    at C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower
ode_modules\graceful-fs\graceful-fs.js:105:5
    at Object.oncomplete (fs.js:107:15)

Console trace:
Trace
    at StandardRenderer.error (C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower\lib
enderers\StandardRenderer.j
s:74:17)
    at Logger.updateNotifier.packageName (C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower\bin\bower:109:18)
    at Logger.EventEmitter.emit (events.js:95:17)
    at Logger.emit (C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower
ode_modules\bower-logger\lib\Logger.js:29:
39)
    at C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower\lib\commands
egister.js:86:20
    at _rejected (C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower
ode_modules\q\q.js:808:24)
    at C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower
ode_modules\q\q.js:834:30
    at Promise.when (C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower
ode_modules\q\q.js:1079:31)
    at Promise.promise.promiseDispatch (C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower
ode_modules\q\q.js:752
:41)
    at C:\Users\mperdeck\AppData
oaming
pm
ode_modules\bower
ode_modules\q\q.js:574:44

System info:
Bower version: 1.2.8
Node version: 0.10.26
OS: Windows_NT 6.1.7601 x64


您的bower json文件(在此处可见:https://raw.github.com/mperdeck/jsnlog.js/2.4.3/bower.json)包含一个领先的隐形unicode字符(可能是BOM)。

这在卷曲输出中可见:curl https://raw.github.com/mperdeck/jsnlog.js/2.4.3/bower.json

从头开始你的bower.json文件,并使用一个不添加垃圾的编辑器:-)。


我通过使用vim打开文件并使用无炸弹保存来解决此问题。

1
2
:setlocal nobomb
:w


问题是由我的bower.json文件编码引起的。 但是,删除BOM是不够的 - 接受了UTF8(没有BOM)。 相反,我不得不使用ASCII编码。