我正在编写一个导入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
知道问题可能在这里吗?
答案 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标记。