“位置0的JSON中出现意外的令牌”?

时间:2017-09-20 22:13:02

标签: json node.js angular

我正在编写一个导入JSON文件的node.js模块:

const distDirPath = "c:/temp/dist/";
const targetPagePath = "c:/temp/index.html";
const cliJsonPath = "C:/CODE/MyApp/.angular-cli.json";
const fs = require('fs');

function deployAot()
{
    var version = JSON.parse(fs.readFileSync(cliJsonPath, 'utf8')).version;
}

// export the module
module.exports = {
    DeployAot: deployAot
};

我在https://jsonlint.com/验证了上面json文件的内容并且它是有效的json但是当我执行节点模块时,deployAot()中上面的第一行代码会返回以下错误:

"Unexpected token  in JSON at position 0"

这是特定的json:

https://jsonblob.com/cd6753d2-9e51-11e7-aa97-2f95b001b178

知道问题可能在这里吗?

1 个答案:

答案 0 :(得分:1)

正如@cartant在问题的评论中已经提到的那样,很可能你会在文件的开头找到一个特殊的字符(字节顺序标记)。

我会尝试替换这个

body = body.replace(/^\uFEFF/, '');

用这个

return this.list.RemoveAll(x => x.Name.Equals(name))

摆脱字符串中的第一个字符,看看会发生什么。

GitHub问题fs.readFileSync(filename, 'utf8') doesn't strip BOM markers

问题的建议:

  

解决方法:

     

{{1}}

     

读取UTF8文件后,您不确定其中是否有BOM标记。