无法在nodejs上运行coffeescript app。接受例外

时间:2012-08-12 08:27:07

标签: node.js coffeescript

我已经开始学习coffescript了,并试图用一种简单的啧啧。但是当我尝试使用运行我的app.coffee文件时 coffee app.coffee命令,我继续获得此异常;

PS C:\Users\Office\Workspace\node\blog-demo\coffeepress> coffee .\app.coffee
Error: In .\app.coffee, Parse error on line 1: Unexpected ' '
    at Object.parseError (C:\Users\Rishav\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\parser.js:477
:11)
    at Object.parse (C:\Users\Rishav\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\parser.js:554:22)
    at exports.compile.compile (C:\Users\Rishav\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\coffee-
script.js:43:20)
    at Object.exports.run (C:\Users\Rishav\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\coffee-scrip
t.js:79:34)
    at compileScript (C:\Users\Rishav\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\command.js:175:29
)
    at fs.stat.notSources.(anonymous function) (C:\Users\Rishav\AppData\Roaming\npm\node_modules\coffee-script\lib\coffe
e-script\command.js:150:18)
    at fs.readFile (fs.js:176:14)
    at Object.oncomplete (fs.js:297:15)

咖啡代码是;

###
Module dependencies.
###
express = require("express")
routes = require("./routes")
http = require("http")
path = require("path")
app = express()
app.configure ->
  app.set "port", process.env.PORT or 3000
  app.set "views", __dirname + "/views"
  app.set "view engine", "jade"
  app.use express.favicon()
  app.use express.logger("dev")
  app.use express.bodyParser()
  app.use express.methodOverride()
  app.use app.router
  app.use express.static(path.join(__dirname, "public"))

app.configure "development", ->
  app.use express.errorHandler()

app.get "/", routes.index
http.createServer(app).listen app.get("port"), ->
  console.log "Express server listening on port " + app.get("port")

我所有的模块都是迄今为止最新的模块。

2 个答案:

答案 0 :(得分:2)

你的代码绝对没问题。但是,Coffeescript会保留static之类的关键字,因此如果您运行coffee -c your_file.coffee,您将在your_file.js中看到已编译的js。用编辑器打开它,看看有什么问题。

我打赌,app.use express.static(path.join(__dirname, "public"))行被编译为app.use(express["static"](path.join(__dirname,"public"))之类的东西。这会导致你的错误;)

将来如果出现错误,请先编译coffeescript,然后查看已编译的版本,看看它有什么问题。

答案 1 :(得分:1)

除了你没有提供的路由文件外,我可以运行代码。我会尝试重新创建该文件,看看实际文件是否有任何损坏。我有时会遇到Coffeescript文件在缩进时出现格式错误的问题,而且还会抱怨其他内容。

我怀疑的另一件事是你的路线文件可能有问题。