Javascript 字符串的不正确解析

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

我正在尝试将ansi颜色代码从控制台输出转换为HTML。我已经找到了一个脚本来执行此操作,但我似乎无法让它解析节点js中的字符串。我已经尝试将JSON.stringify也包括特殊字符,但它不起作用

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)