我正在尝试管理我的节点程序包依赖项。我希望能够通过运行命令来安装所有必需的依赖项,并且据我所读,实现此目的的一种方法是使用package.json
文件并运行npm install
。所以我的JSON文件如下所示:
{
"name": "Name-Of-The-Thing",
"description": "The Thing's Name",
"author": "The Dude <[email protected]>",
"dependencies": {
"mocha":">= 1.12.0",
"mocha-phantomjs":">= 3.1.0",
"chai":">= 1.7.2",
"phantomjs":">= 1.9.1"
}
}
但是npm install
报告以下错误:
npm ERR! Failed to parse json
npm ERR! Unexpected token ?
npm ERR! File: C:\Path\To\The\Thing\package.json
npm ERR! Failed to parse package.json data.
npm ERR! package.json must be actual JSON, not just JavaScript.
npm ERR!
npm ERR! This is not a bug in npm.
npm ERR! Tell the package author to fix their package.json file. JSON.parse
npm ERR! System Windows_NT 6.2.9200
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "test"
npm ERR! cwd C:\Path\To\The\Thing
npm ERR! node -v v0.8.15
npm ERR! npm -v 1.1.66
npm ERR! file C:\Path\To\The\Thing\package.json
npm ERR! code EJSONPARSE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! C:\Path\To\The\Thing\npm-debug.log
npm ERR! not ok code 0
有人知道为什么吗?
正确答案:
您的编辑器会在JSON文件中添加字节顺序标记,这会使八位字节流成为无效的JSON文本。
JSON RFC说:
JSON文本应以Unicode编码。默认编码为UTF-8。
由于JSON文本的前两个字符始终是ASCII字符[RFC0020],因此可以确定八位字节流是UTF-8,UTF-16(BE或LE)还是UTF-32(BE或LE)通过查看前四个八位位组中的空值模式。
00 00 00 xx UTF-32BE 00 xx 00 xx UTF-16BE xx 00 00 00 UTF-32LE xx 00 xx 00 UTF-16LE xx xx xx xx UTF-8
由于上述原因,您提到的错误报告已关闭。
据我了解,任何有效的ASCII编码文本也恰好是有效的UTF-8,因此,加上没有BOM表,它解释了为什么现在可以按预期工作。
通常,我认为您应该设置文本编辑器以将文件保存为UTF-8,且不带字节顺序标记。请参见UTF-8和不带BOM的UTF-8有什么区别?进行讨论。Per Node.js源代码需要什么编码?,Node.js将在以这种方式编码的JS源文件中接受非ASCII字符。当您要在源代码中的某个地方嵌入非ASCII字符串时,这可能会很方便。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句