npm安装无法读取package.json
我正在尝试管理我的节点包依赖项。我希望能够通过运行一个命令来安装所有必需的依赖项,根据我所阅读的内容,实现这一点的一种方法是使用npm安装无法读取package.json,npm,package-managers,Npm,Package Managers,我正在尝试管理我的节点包依赖项。我希望能够通过运行一个命令来安装所有必需的依赖项,根据我所阅读的内容,实现这一点的一种方法是使用package.json文件并运行npm install。因此,我的JSON文件如下所示: { "name": "Name-Of-The-Thing", "description": "The Thing's Name", "author": "The Dude <the.dude@dudethinking.com>", "dependencies"
package.json
文件并运行npm install
。因此,我的JSON文件如下所示:
{
"name": "Name-Of-The-Thing",
"description": "The Thing's Name",
"author": "The Dude <the.dude@dudethinking.com>",
"dependencies": {
"mocha":">= 1.12.0",
"mocha-phantomjs":">= 3.1.0",
"chai":">= 1.7.2",
"phantomjs":">= 1.9.1"
}
}
有人知道为什么吗?正确答案:
编辑器将字节顺序标记添加到JSON文件中,这使得八位字节流成为无效的JSON文本
说:
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格式保存文件,而不使用字节顺序标记。请参阅以进行讨论。根据,Node.js将接受以这种方式编码的js源文件中的非ASCII字符。当您希望在源代码中的某个位置嵌入非ASCII字符串时,这非常方便。唯一的解决方案是指定依赖项的确切版本。NPM有时无法识别>或.x npm错误!意外的代币
如果没有BOM表,还要检查文件中是否有“?”或其他错误,例如缺少或附加“,”这个特定的package.json对我来说很好。@MerynStol这太棒了。很高兴知道事情真的这么简单。也许这是一个平台问题。我在Windows 8上运行该命令,一个64位体系结构如果出现“意外令牌?”错误,可能json文件中有一些奇怪的(不可见的)字符。也许可以尝试不同的文本编辑器,或者修改编辑器的设置。然后重新保存package.json文件。我会在任何地方使用UTF-8。@MerynStol谢谢你的想法,它启发了我!该文件已编码为UTF-8,但该错误消息使我产生怀疑,因此我将其编码为ASCII(即删除BOM),效果非常好!谢谢事实上,这里有一个问题的错误报告ASCII是UTF-8的一个子集,当您开始使用出现在亚洲字符集中的重音字符或表意文字(字符代码255以上的任何字符)时,省略BOM只会导致问题。我想理想的解决方案是让我的编辑器支持JSON规范用于识别文件的特定编码,并激活基于.JSON文件扩展名的检测机制,遗憾的是,Visual Studio团队似乎还没有考虑到这一点(我怀疑他们是否会这样做)@Ceilingfish可能是发布在这里的解决方案之一?天知道为什么,但就我而言,当我用BOM保存时,它起了作用。否则,它无法解析JSON。我正在使用升华文本2。
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