启用cmd的颜色输出

5
我无法在我的cmd.exe(Windows 7,x64)上获得我的casperjs断言的颜色。我按照ansicon的说明进行操作。
如果我理解正确,如果安装了casperjs,则断言会自动着色。

如果已安装ansicon,则Windows用户将获得带颜色的输出。

有什么想法吗? 更新:
var casper = require('casper').create(),
    utils = require('utils'),
    http = require('http'),
    fs = require('fs'),
    colorizer = require('colorizer').create('Colorizer');

var xpath = require('casper').selectXPath;

casper.start('http://google.com/').then(function(response) {
    casper.echo('This is supposed to be green', 'INFO');
});

casper.run();

CMD:

C:\Users\itsme\Desktop>casperjs test test.js
Test file: test.js
This is supposed to be green

C:\Users\itsme\Desktop>casperjs test test.js

1
你下载并安装了ansicon吗?你采取了哪些步骤来使用它,当你使用它时会发生什么? - Ross Ridge
我已经下载了ansicon,将其放在C:下,将x64添加到我的环境变量(路径),运行ansicon.exe -i(没有输出),关闭cmd并重新打开它,最后我运行了我的casper测试,在其中我放置了casper.echo('green message', 'INFO');。我没有得到任何颜色。 - smarber
@RossRidge,如果输出仍然看起来像“←[36m [info] ...”,你有什么建议吗? - Bill
@Bill 这实际上是一个与原帖作者的问题不同的问题。他显然从未看到过那样的输出。我能建议的就是确保您安装了ansicons,假设您正在使用Windows。你可能想发布你自己的问题。 - Ross Ridge
@RossRidge,谢谢。我会的。 - Bill
显示剩余5条评论
2个回答

2
答案在这里:使用.NET进行ANSI颜色控制台输出 CasperJS二进制包带有预编译的casperjs.exe,目标平台为x86。不幸的是,在x64版本的ansicon上会产生你提到的效果。
解决方案:
  1. Use the x86 version of ansicon.exe
  2. Recompile casperjs.exe for the x64 platform, which is quick and painless:

    C:\>cd casperjs\src
    C:\casperjs\src>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /platform:x64 casperjs.cs
    
将生成的 .exe 文件复制到 bin 目录即可完成。

2
我认为你的问题在于 casperjs 在 Windows 上测试环境变量 ANSICON 是否设置,如果没有设置就不尝试着对输出进行着色。不幸的是,当你按照你所做的方式安装 ansicon 时,并没有以任何常规方式设置这个变量。相反,它使用了粗糙的方法在窗口的初始 cmd.exe 进程的环境中设置它,但仅当该 cmd 进程尝试检索其值时才会设置。由于通常没有任何东西使用 ANSICON 环境变量,这意味着它通常不会对在该窗口中运行的其他进程(如 casperjs)可见。
如果这是问题的原因,则在运行 casperjs 之前,你只需要设置 ANSICON 变量即可。
set ANSICON=%ANSICON%

您还可以使用setx ANSICON=foo将其永久设置为环境的一部分。

(该段内容介绍了如何使ANSICON成为环境的一部分,以便长期使用,需要使用setx命令。)

如果您使用了 setx 命令,您需要关闭当前命令行窗口并打开一个新的窗口以使其生效。 - Ross Ridge
尝试在你的示例中添加第二个 echo 调用,其中字符串为 "\033[32mThis is supposed to be green\033[m"。如果这样可以工作,那么 ansicon 就正常工作了,问题可能出在 casper.js 上。如果不起作用,则可能是因为某种原因导致 ansicon 无法正常工作。 - Ross Ridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接