Javascript 如何使用node.js解析YAML文件以读取注释?
我正在尝试解析YAML文件。我能够正确地解析文件,但是YAML文件中的注释没有被读取。有什么办法吗?附加解析器代码和config.json。同时附上文件的屏幕截图和输出以供参考Javascript 如何使用node.js解析YAML文件以读取注释?,javascript,node.js,yaml,Javascript,Node.js,Yaml,我正在尝试解析YAML文件。我能够正确地解析文件,但是YAML文件中的注释没有被读取。有什么办法吗?附加解析器代码和config.json。同时附上文件的屏幕截图和输出以供参考 var fs= require('fs'); var path= require('path'); var yaml = require('js-yaml') var fname= "config.json" var jPath= path.join(__dirname,"..","ConfigGen","Config
var fs= require('fs');
var path= require('path');
var yaml = require('js-yaml')
var fname= "config.json"
var jPath= path.join(__dirname,"..","ConfigGen","Config",fname);
var jsString= fs.readFileSync(jPath, 'utf8')
// Get path for files from Config file
var tType= "cto" //Get this from input
var pth= JSON.parse(jsString)[tType] //perform error handling
var cType = "jbod" //Get this from input
//Use that path
fs.readdir(pth, function(err,files) {
files.forEach(function(file){
fName= cType+"_"+tType+"_uut.yaml-example";
if(file==fName){
var flContent= fs.readFileSync(path.join(pth,file),"utf8")
// return path.join from here and use the next part in a separate function
var data= yaml.safeLoad(flContent)[0][0]
console.log(data)
for (var index in data){
var prefix = index
for (idx in data[index]){
//console.log(prefix, idx ,data[prefix][idx])
}
}
}
})
})
根据《公约》,重申:
评论是一种演示细节,不得用于传达内容信息
因此,假设您无法将注释与任何相邻字段相关联,您可以将整个文件作为字符串读取,并与
您可以像这样读取文件并进行解析:
var{promises:fs}=require('fs');
(异步()=>{
let path=“./config.yaml”
让file=wait fs.readFile(路径“utf8”)
让matches=file.matchAll(/#。*/g)
让注释=[…匹配].map(m=>m[0])
console.log(注释)
})()
如果您的yaml文件如下所示:
#阻止注释
环境:发展
属性:值#内联注释
它将记录以下内容:
[ '# block comment', '# inline comment' ]
YAML规范:“注释是一种演示细节,不得用于传达内容信息。”因此,大多数YAML实现(ruamel除外)扔掉解析器级别的注释,因为如果它们的内容不能被使用,为什么要加载它们?我的问题是,我想接收一个文件,更新一个值,然后输出该文件,与原始文件的唯一更改是更改后的值。是的,yaml规范可能会说注释可以被丢弃,但该文件也会被人读取谁也不希望失去这些评论。