【问题标题】:Node js Syntax error unexpected token?Node js语法错误意外令牌?
【发布时间】:2017-05-11 19:55:12
【问题描述】:

我的代码和 log4js 文件中的所有内容似乎都很好并且语法正确。但是,在运行我的应用程序时,我收到以下错误:

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文件没有语法错误。

【问题讨论】:

  • 您的文件是否包含 UTF-8 BOM 符号?
  • 是的,我的文件以它开头。它不应该包含它吗?编辑:好的...我只是将文件与另一个 json 文件进行了比较,它不应该有它,我删除了符号,现在一切正常。非常感谢您提请我注意。你知道为什么这个符号在我创建它时被添加到我的文件中吗?

标签: node.js log4js-node


【解决方案1】:

您可能有一个 BOM 字符或其他在 JSON 中非法的不可打印字符。或者,您可能使用的字符编码不是 JSON 仅有的 5 种合法编码之一,即 UTF-8、UTF-16BE、UTF-16LE、UTF-32BE 或 UTF-32LE。

有关为什么 BOM 在 JSON 中非法的更多详细信息,请参阅这些答案:

【讨论】:

  • 是的,我的 JSON 文件开头确实有一个 BOM 字符,我删除了它,现在它工作正常。我确实想知道为什么将 BOM 字符添加到我的 JSON 文件的开头,因为我知道我没有手动添加它。有什么想法吗?
  • @Daniel 很难说。也许是您的文本编辑器或其他处理或保存 JSON 的工具添加了 BOM 字符。一些工具是在假设 BOM 字符是无害的并且在不通知的情况下添加它们并导致问题的情况下编写的,其中一个是 JSON,它在字符编码的RFC 7159, Section 8.1 中明确指出:“实现不得添加字节顺序标记到JSON 文本的开头。”这是整个 RFC 中唯一的“不得”,因此非常重要。
  • 是的,我查看了您链接的答案并查看了 RFC 参考。好吧,我学到了一些新东西,这很有帮助。谢谢你:)
猜你喜欢
  • 2017-08-09
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多