2016-12-27 51 views
1

我的代碼和log4js文件中的所有內容似乎都很好,語法正確。但是,運行我的應用程序時,我得到這個以下錯誤:節點js語法錯誤意外令牌?

undefined:1 
?{ 
^ 
SyntaxError: Unexpected token ? 

它,當我到達此行發生:

var logFile = 'log4js_' + process.env.NODE_ENV + '.json'; 
log4js.configure(logFile); 

這是我log4js文件

{ 
    "appenders": [ 
    { 
     "type": "console" 
    }, 
    { 
     "type": "file", 
     "filename": "logs/main.log", 
     "maxLogSize": 1024000, 
     "category": "main" 
    } 
    ] 
} 

我有不知道爲什麼它會認爲有一個「?」字符在開始時,log4js文件沒有語法錯誤。

+0

你的文件包含UTF-8 BOM符號? – vitalyster

+0

是的,我的文件以它開頭。它不應該包含它? 編輯:好的...我只是比較文件到另一個JSON文件,它不應該有它,我刪除了符號,現在一切工作。非常感謝您將此引起我的注意。 你碰巧知道爲什麼這個符號被添加到我的文件,當我創建它? – Daniel

回答

1

您可能有一個BOM字符或其他不可打印的字符,在JSON中是非法的。或者,您可能正在使用除UTF-8,UTF-16BE,UTF-16LE,UTF-32BE或UTF-32LE這5種JSON合法編碼之外的字符編碼。

有關爲什麼BOM是違法的JSON更多詳情,請參閱這些答案:

+0

是的,我在我的JSON文件的開頭確實有一個BOM字符,我將其刪除,現在工作正常。但我想知道的是,爲什麼BOM字符被添加到我的JSON文件的開頭,因爲我知道我沒有手動添加它。有什麼想法? – Daniel

+0

@丹尼爾很難說。也許這是您的文本編輯器或其他一些處理或保存JSON的工具添加了BOM字符。有些工具是在BOM字符無害的情況下編寫的,並且在沒有通知的情況下添加它們並導致問題,其中之一是JSON,它在[RFC 7159,第8.1節]中明確聲明(https://tools.ietf.org /html/rfc7159#section-8.1)字符編碼:「實現不應該添加字節順序標記到JSON文本的開頭。」這是整個RFC中唯一的「MUST NOT」,所以它非常重要。 – rsp

+0

是我看了看你鏈接的答案,看到了RFC參考。那麼我學到了一些新東西,這很有幫助。謝謝 :) – Daniel