一些背景知识:在我的 Rails 环境中,我使用的是CoffeeScript,它使用ExecJS,它使用Windows 脚本主机来执行 Javascript 文件。
不幸的是,当我的 CoffeeScript 文件被编译时,我遇到了巨大的延迟(> 30 秒)。
使用 Process Explorer 和 Process Monitor 我已经将命令行确定为原因之一。cscript.exe
期望其参数带有双斜杠:
cscript //E:jscript //Nologo //U C:/path_to_coffeescript_compiler.js
出于某种原因cmd.exe
(不是cscript.exe
!)将双斜杠视为双反斜杠,并尝试解析显然失败的每个参数的网络名称,但不是经过一段时间的延迟。
这是进程监视器日志的一小段摘录:
cmd.exe CreateFile \\E:jscript\\ OBJECT PATH INVALID
cmd.exe CreateFile \\E:jscript \Nologo\\ BAD NETWORK PATH
cmd.exe CreateFile \\E:jscript \Nologo \U\ BAD NETWORK PATH
cmd.exe CreateFile \\Nologo\\ OBJECT PATH INVALID
cmd.exe CreateFile \\Nologo \U\ BAD NETWORK PATH
... 等等。
我能做些什么来防止这种情况发生?