2016-12-27 9 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

:BOMはJSONで違法である理由の詳細については

はそれらの答えを参照してください? – vitalyster

+0

はい、私のファイルはそれで始まります。それを含んではならないのでしょうか? EDIT:ok ...ファイルを別のjsonファイルと比較しただけで、シンボルが削除されてしまって、すべてが機能しています。これを私の注意を引くことに感謝します。 作成時にこのシンボルがファイルに追加された理由を知りましたか? – Daniel

答えて

1

JSONに違法なBOM文字やその他の印刷不可能な文字がある場合があります。あるいは、UTF-8、UTF-16BE、UTF-16LE、UTF-32BEまたはUTF-32LEのJSONの5つの有効なエンコーディング以外の文字エンコーディングを使用している可能性があります。あなたはUTF-8 BOMのシンボルを含むファイルでした

+0

私はJSONファイルの開始時にBOM文字を持っていましたが、これを削除しても問題なく動作します。しかし私が知りたいのは、私が手動で追加していないことを知っているので、BOM文字がJSONファイルの先頭に追加された理由です。何か考えますか? – Daniel

+0

@ダニエルそれは言うのは難しいです。たぶんあなたのテキストエディタやJSONを処理または保存した他のツールがBOM文字を追加したのかもしれません。いくつかのツールは、BOM文字が無害であることを前提として書かれており、予告なしにそれらを追加し、問題を引き起こします。その1つは[RFC 7159、Section 8.1](https://tools.ietf.org /html/rfc7159#section-8.1)文字エンコーディング: "実装はJSONテキストの先頭にバイトオーダーマークを追加してはいけません(MUST NOT)。"これはRFC全体で唯一の「必須」なので、かなり重要です。 – rsp

+0

ええ、私はあなたがリンクし、RFCの参照を見た答えを見てみました。私は何か新しいことを学んだし、それは役に立つ。ありがとうございました :) – Daniel

関連する問題