Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用node.js解析YAML文件以读取注释?_Javascript_Node.js_Yaml - Fatal编程技术网

Javascript 如何使用node.js解析YAML文件以读取注释?

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

我正在尝试解析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",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规范可能会说注释可以被丢弃,但该文件也会被人读取谁也不希望失去这些评论。