我从来都不喜欢补丁或变通方法,所以我会尽力分析这里发生的事情:
根据您在上面的帖子中突出显示的错误消息,这里对播放框架没什么兴趣,所以我们将从那里开始。
我们有 ruby 被 sass 编译器调用,它抱怨加载错误。很公平。乍一看,由于 ruby.exe 错误消息,人们会认为应该归咎于 ruby 配置。但是,我们发现它确实在寻找一个文件,即 sass.bat,所以我好奇的眼睛把我带到了那里。
因此,我们发现批处理文件包含以下内容:
1 @ECHO OFF
2 IF NOT "%~f0" == "~f0" GOTO :WinNT
3 @"ruby.exe" "C:/Ruby193/bin/sass" %1 %2 %3 %4 %5 %6 %7 %8 %9
4 GOTO :EOF
5 :WinNT
6 @"ruby.exe" "%~dpn0" %*
所以这个脚本中有 6 个命令行,还不错。通过检查,我注意到第 2 行有一个 if 条件,该条件依赖于获取正在执行的所有参数或全名。在 Windows 7 上测试时,该条件似乎评估为假,因此我们总是在第 6 行结束。这个问题的关键是在 Windows 上运行 Ruby 的机器。
本质上,我们有一个“跳转子例程”或 GOTO 指令来命中脚本中的 WinNT,因此我们正在当前目录中寻找 sass.bat,从而产生您当前的错误。
这是瘦的:您可以通过执行注释 sass.bat 文件第 2 行中的 if 条件
REM IF NOT "%~f0" == "~f0" GOTO :WinNT
或者你可以使第 6 行与第 3 行相同。修改后,你的 sass 编译器将知道在哪里可以找到 Ruby SASS。
我喜欢 Windows,但这在 OS X 上不是问题,因为预装了 Ruby。有些人试图为 ruby/sass 创建别名,但问题的根源不是 PATH 环境变量。
在我的示例中,Ruby 安装在 C: 上,使用版本 1.93,但同样适用于所有最新版本,包括 v2。
我希望这有帮助!