【问题标题】:No newline at end of file causing "Unexpected token ILLEGAL" error?文件末尾没有换行符导致“意外令牌非法”错误?
【发布时间】:2015-04-20 14:43:17
【问题描述】:

我从同事那里提取了一些提交,并遇到了一些 ^M 字符,我使用 :set ff=unix 在我的文件中删除了这些字符。

但是,当我加载页面时,它会抱怨“意外的令牌非法”关于一些以前运行良好的 JS。

我查看了 git diff,它唯一能告诉我的是“文件末尾没有换行符”——尽管继续阅读,我仍然感到困惑,为什么这会使我的 JS 失控。

我该如何解决这个问题?

【问题讨论】:

  • 打开 vim 并保存文件。 vim 会自动在文件末尾添加一个换行符。
  • @FDinoff 已经这样做了 - 没有帮助。
  • 您是否将代码剪切/粘贴到您的文本编辑器中?回车不会伤害任何东西,丢失的行终止符也不会。您的问题可能是一个杂散的 Unicode 字符。
  • 您可能也在某处遗漏了分号。这以及缺少换行符可能会导致模块或函数作为参数传递给其他函数,从而破坏一切
  • @Pointy 此文件在工作和不工作之间没有进行任何更改 - 可能是隐藏字符?

标签: javascript git cakephp vim eol


【解决方案1】:

您可以通过在 Vim 中发出搜索/替换命令来解决问题:

:1,$s/^M//g

(在 *nix 系统上,输入 CTRL+V 然后 CTRL+M 以获得^M 字符)

或者您也可以在 shell 中对您的文件使用 dos2unix

[user@host]$ dos2unix path/to/your/file

【讨论】:

  • 这些都没有帮助。我还是有这个问题。
  • 可能是您的文件中存在 BOM 字符。以下命令为您提供了什么? file -i path/to/your/file
  • 它告诉我这是一个普通文件“:普通文件”。
  • 你能提供命令发出的全部输出吗?不要忘记-i 选项,以便file 命令给出MIME 类型字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多