写一个文件保持制表符和 EOL
Write a file keeping tabs and EOL
我正在尝试将字符串的内容写入 node.js
中的文件中
我有一些 raml 文件,我可以加入它们。如果我在控制台中打印变量,我会看到它被很好地解析但是一旦我保存在一个文件中,该文件只包含一行:
var raml = require('raml-parser');
var fs = require('fs');
var path = require('path');
var os = require('os')
path.join(__dirname, './')
raml.loadFile('schema.raml').then( function(data) {
console.log(data);
var filePath = "schema.raml";
fs.unlinkSync(filePath);
fs.writeFile("./new.raml", JSON.stringify(data).replace('/\n', os.EOL), function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
}, function(error) {
console.log('Error parsing: ' + error);
});
我添加了替换 EOL 来更改文件中的所有“\n”。如果我删除它,文件将在每一行的末尾包含“\n”。
在控制台上,这是输出:
{ title: 'RAML Flattener',
baseUri: 'http://github.com/joeledwards/node-flat-raml',
version: '1',
mediaType: 'application/json',
protocols: [ 'HTTP' ],
resources:
[ { relativeUri: '/base',
methods: [Object],
resources: [Object],
relativeUriPathSegments: [Object] } ] }
data
是一个 Javascript 对象;当你 console.log()
时它是如何显示的,它与它在你正在编写的文件中的最终结果没有多大关系。
问题是您正在使用 JSON.stringify()
,默认情况下,它不会漂亮地打印输出字符串。
相反,试试这个:
JSON.stringify(data, null, 2)
这将使您的输出看起来像这样:
{
"title": "RAML Flattener",
"baseUri": "http://github.com/joeledwards/node-flat-raml",
"version": "1",
"mediaType": "application/json",
"protocols": [
"HTTP"
],
"resources": [
{
"relativeUri": "/base",
"methods": { ... },
"resources": { ... },
"relativeUriPathSegments": { ... }
}
]
}
您可能需要也可能不需要对其输出调用 .replace()
。如果你这样做,请使用这个(你使用的那个无效):
.replace(/\n/, os.EOL)
我正在尝试将字符串的内容写入 node.js
中的文件中我有一些 raml 文件,我可以加入它们。如果我在控制台中打印变量,我会看到它被很好地解析但是一旦我保存在一个文件中,该文件只包含一行:
var raml = require('raml-parser');
var fs = require('fs');
var path = require('path');
var os = require('os')
path.join(__dirname, './')
raml.loadFile('schema.raml').then( function(data) {
console.log(data);
var filePath = "schema.raml";
fs.unlinkSync(filePath);
fs.writeFile("./new.raml", JSON.stringify(data).replace('/\n', os.EOL), function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
}, function(error) {
console.log('Error parsing: ' + error);
});
我添加了替换 EOL 来更改文件中的所有“\n”。如果我删除它,文件将在每一行的末尾包含“\n”。
在控制台上,这是输出:
{ title: 'RAML Flattener',
baseUri: 'http://github.com/joeledwards/node-flat-raml',
version: '1',
mediaType: 'application/json',
protocols: [ 'HTTP' ],
resources:
[ { relativeUri: '/base',
methods: [Object],
resources: [Object],
relativeUriPathSegments: [Object] } ] }
data
是一个 Javascript 对象;当你 console.log()
时它是如何显示的,它与它在你正在编写的文件中的最终结果没有多大关系。
问题是您正在使用 JSON.stringify()
,默认情况下,它不会漂亮地打印输出字符串。
相反,试试这个:
JSON.stringify(data, null, 2)
这将使您的输出看起来像这样:
{
"title": "RAML Flattener",
"baseUri": "http://github.com/joeledwards/node-flat-raml",
"version": "1",
"mediaType": "application/json",
"protocols": [
"HTTP"
],
"resources": [
{
"relativeUri": "/base",
"methods": { ... },
"resources": { ... },
"relativeUriPathSegments": { ... }
}
]
}
您可能需要也可能不需要对其输出调用 .replace()
。如果你这样做,请使用这个(你使用的那个无效):
.replace(/\n/, os.EOL)