我正在尝试在NodeJS中加载Chrome master_preferences文件。我尝试过以下尝试:
不起作用
require('./master_preferences')
不起作用(确认文件是带有file -I
的utf8)
JSON.parse(fs.readFileSync('master_preferences', 'utf8'));
是否有效(如果我运行cp master_preferences master_preferences.json
)
require('./master_preferences.json')
JSON.parse()是否比require()更严格? FWIW,python 2.7也无法使用json.load(f)
答案 0 :(得分:2)
require('./master_preferences')
无法正常工作,因为没有任何扩展名,节点会将其视为具有.js
扩展名的常规javascript文件并尝试编译它。由于仅仅json不是有效的js语法,因此会抛出错误。
由于require('./master_preferences.json')
适合您,我认为问题在于BOM特征。在解析文件之前,Becaue require()
尝试剥离BOM字符。 See source
function stripBOM(content) {
if (content.charCodeAt(0) === 0xFEFF) {
content = content.slice(1);
}
return content;
}
JSON.parse(stripBOM(fs.readFileSync('master_preferences', 'utf8')));