Javascript 字符串的不正确解析
我正在尝试将ansi颜色代码从控制台输出转换为HTML。我已经找到了一个脚本来执行此操作,但我似乎无法让它解析节点js中的字符串。我已经尝试将JSON.stringify也包括特殊字符,但它不起作用Javascript 字符串的不正确解析,javascript,node.js,Javascript,Node.js,我正在尝试将ansi颜色代码从控制台输出转换为HTML。我已经找到了一个脚本来执行此操作,但我似乎无法让它解析节点js中的字符串。我已经尝试将JSON.stringify也包括特殊字符,但它不起作用 forever list [32minfo[39m: Forever processes running [90mscript[39m [37mforever[39m [37mpid[39m [37mid[39m [90mdata[39m: [37m [39m
forever list
[32minfo[39m: Forever processes running
[90mscript[39m [37mforever[39m [37mpid[39m [37mid[39m
[90mdata[39m: [37m [39m [37muid[39m [90mcommand[39m
我从节点js中的ssh2shell获得了这样的输出。我有一个剧本:
这是为了将上述内容转换为html并添加适当的颜色代码。它在正常端子输出下工作良好,例如:
npm install --color=always | ansi2html.sh > npminstall.html
这是linux机器上传输到文件的原始输出。当JS字符串显示在console.log中时,它们似乎缺少这些转义,但也缺少换行符。也许是因为我将它们直接连接到字符串中并删除了特殊字符
total 24
-rwxr-xr-x 1 admin admin 17002 May 13 02:52 ^[[0m^[[38;5;34mansi2html.sh^[[0m
drwxr-xr-x 4 admin admin 4096 May 13 00:00 ^[[38;5;27mgit^[[0m
-rw-r--r-- 1 admin admin 0 May 13 02:57 ls.html
希望其中一些是有意义的
谢谢你试过这个吗
var spawn=require('child_process')。spawn
,ansi=require('ansi-html-stream')
,fs=require('fs')
var npm=spawn('npm',['install','browserify','--color','always',]{
cwd:process.cwd()
})
var stream=ansi({chunked:false})
,file=fs.createWriteStream('browserify.html','utf8')
npm.标准管道(溪流)
npm.标准管道(溪流)
stream.pipe(文件,{end:false})
stream.once('end',function(){
file.end(“\n”)
})
file.write('\n');
SSH2shell对命令的输出应用了几个过滤器。首先从响应中删除非标准ASCII,然后删除颜色格式代码
在v1.6.0中,我添加了pipe()/unpipe()、事件和公开流。on('data',function(data){})事件,因此您可以直接访问流输出,而无需SSH2shell以任何方式与其交互。
这将通过允许您访问原始数据来解决无法从SSH2shell获得正确输出的问题
您从哪里获得ANSI字符串?档案?史坦?代码中有硬编码吗?
var spawn = require('child_process').spawn
, ansi = require('ansi-html-stream')
, fs = require('fs')
var npm = spawn('npm', ['install', 'browserify', '--color', 'always'], {
cwd: process.cwd()
})
var stream = ansi({ chunked: false })
, file = fs.createWriteStream('browserify.html', 'utf8')
npm.stdout.pipe(stream)
npm.stderr.pipe(stream)
stream.pipe(file, { end: false })
stream.once('end', function() {
file.end('</pre>\n')
})
file.write('<pre>\n');
var fs = require('fs')
var host = {
server: {
host: mydomain.com,
port: 22,
userName: user,
password: password:)
},
commands: [
"`Test session text message: passed`",
"msg:console test notification: passed",
"ls -la"
],
}
//until npm published use the cloned dir path.
var SSH2Shell = require ('ssh2shell')
//run the commands in the shell session
var SSH = new SSH2Shell(host),
callback = function( sessionText ){
console.log ( "-----Callback session text:\n" + sessionText);
console.log ( "-----Callback end" );
},
firstLog = fs.createWriteStream('first.log'),
secondLog = fs.createWriteStream('second.log'),
buffer = ""
//multiple pipes can be added but they wont be bound to the stream until the connection is established
SSH.pipe(firstLog).pipe(secondLog);
SSH.on('data', function(data){
//do something with the data chunk
console.log(data)
})
SSH.connect(callback)