Когда вы запускаете код CoffeeScript с помощью команды coffee
, код компилируется в JS, а затем запускается программно в процессе Node. В частности, CoffeeScript использует команду
mainModule._compile code, mainModule.filename
(см. coffee-script.coffee ), где mainModule
является ссылкой на require.main
. Вот почему в трассировке стека вы должны увидеть
Error: aAH
at Object. (.:12:9)
at Object. (.:13:4)
at Module._compile (module.js:404:26)
...
Одним из побочных эффектов этого, который вы затронули, является то, что исключения никогда не будут полностью доходить до уровня process
. Вместо этого его ловят благодаря этому коду
try
...
else if o.run then CoffeeScript.run t.input, t.options
...
catch err
...
в command.coffee .
CoffeeScript выполняет несколько шагов для имитации «чистого» процесса Node.js при запуске coffee foo.coffee
, но всегда будут некоторые различия между прямым запуском CoffeeScript и выполнением скомпилированного JS. Для сложных приложений, таких как то, которое вы разрабатываете, я бы предложил настроить Cakefile, чтобы вы могли автоматически перекомпилировать, тестировать и запускать свое приложение при сохранении, а не использовать встроенную команду запуска вашего редактора.