Следуя совету здесь я могу получить сценарий оболочки на JavaScript, который запускается под node.js и печатает немного hello world html:
test.cgi
-------
#!/usr/local/bin/node
console.log("Content-Type: text/html; charset=utf-8\n");
console.log("<html><body><h1>hello node.js world</h1></body></html>");
-------
И запустить его:
$ ./test.cgi
Content-Type: text/html; charset=utf-8
<html><body><h1>hello node.js world</h1></body></html>
Он также работает должным образом в Apache и отображает ожидаемый HTML-код в браузере.
Теперь перейдем к CoffeeScript (обратите внимание на прекрасную документацию в тройных кавычках в стиле Python):
ctest.cgi
-------
#!/usr/bin/env coffee
console.log("Content-Type: text/html; charset=utf-8\n");
console.log('''<html><body><h1>hello CoffeeScript world
</h1></body></html>''');
-------
Это работает при локальном запуске:
$ ./ctest.cgi
Content-Type: text/html; charset=utf-8
<html><body><h1>hello CoffeeScript world
</h1></body></html>
Но не в Апаче:
Internal Server Error
Почему это не работает?