2011-02-25 56 views
3

這是我在CoffeeScript中用於使用MongoDB進行簡單測試的代碼。 當我運行
coffee -c UserDataProvider.coffee
我結束了一個錯誤未封閉INDENT ON LINE 6第6行中的未封閉INDENT(CoffeeScript)編譯器錯誤

這是我的代碼:

Db = require('mongodb/db').Db 
ObjectID = require('mongodb/bson/bson').ObjectID 
Server = require('mongodb/connection').Server 

class UserDataProvider 
    constructor = (host,port)-> 
     this.db = new Db('test' , new Server(host ,port,{})) 

    getCollection = (callback) -> 
     this.db.collection('data',(error,data)-> 
      if error then callback(error) 
      else callback(data) 

堆棧跟蹤是:

Error: In UserDataProvider.coffee, unclosed INDENT on line 6 
    at Error (unknown source) 
    at Rewriter.ensureBalance (/usr/local/lib/node/.npm/coffee-script/1.0.1/package/lib/rewriter.js:283:17) 
    at Rewriter.rewrite (/usr/local/lib/node/.npm/coffee-script/1.0.1/package/lib/rewriter.js:21:12) 
    at Lexer.tokenize (/usr/local/lib/node/.npm/coffee-script/1.0.1/package/lib/lexer.js:37:29) 
    at Object.compile (/usr/local/lib/node/.npm/coffee-script/1.0.1/package/lib/coffee-script.js:26:34) 
    at /usr/local/lib/node/.npm/coffee-script/1.0.1/package/lib/command.js:117:33 
    at /usr/local/lib/node/.npm/coffee-script/1.0.1/package/lib/command.js:85:26 
    at [object Object].<anonymous> (fs.js:86:5) 
    at [object Object].emit (events.js:39:17) 
    at afterRead (fs.js:843:12) 

任何人的幫助?

+0

您應該更新代碼才能說'構造函數:'和'getCollection:'而不是用'=',按照你的其他問題在http://stackoverflow.com/問題/ 5124383/another-coffeescript-error就這樣,其他人來到這個頁面不會感到困惑。 :) – 2011-02-26 03:40:33

回答

4

該行的第一個左括號永遠不會關閉:

this.db.collection('data',(error,data) -> 

它實際上是沒有必要的,所以你可能要一起除去這一切,如果你的目的是要通過「數據」第一個參數和function(error, data) { ... }作爲第二個參數。

+0

真棒,沒有注意到。但現在我最終得到一個分析錯誤的db.collection意想不到'。' 任何想法? – akshaykarthik 2011-02-25 23:51:17

+1

對於完全相同的代碼?當我從上面刪除'('時,它爲我編譯得很好,只是爲了確認,我已經從我的答案中更改了這行:'this.db.collection'data',(error,data) - >' – Jakob 2011-02-26 00:05:40

+0

對不起,我不知道發生了什麼事,但是當我保存並重新打開該文件時,它會起作用。感謝您的幫助。 – akshaykarthik 2011-02-26 00:20:54