Atom编辑器:无法加载init.coffee-错误:保留字'function'

问题描述 投票:1回答:1

更新:我找到了该问题的解决方案/解决方法。我将init.coffee重命名为init.js,因为Atom还支持JavaScript。我仍然想知道问题的原因。下面的脚本不是无效的CoffeeScript还是我缺少某种依赖关系?我从Arch官方存储库安装了Atom。

由于某种原因,我的init.coffee无法加载。以下代码来自Atom的"Composed" Commands文档:

atom.commands.add('atom-text-editor', 'custom:cut-line', function () {
  const editor = this.getModel();
  editor.selectLinesContainingCursors();
  editor.cutSelectedText();
});

Atom启动时引发错误:

Failed to load /home/myname/.atom/init.coffee
reserved word 'function'

我不确定这是错误,我的错还是文档过时。该错误消息并不是超级有用,因为即使我不了解Coffee / JavaScript的很多知识,“功能”也是我的保留字。

我用function替换了() -> {...},这导致了相同的错误,除了这次是保留字const

最后,我尝试定义一个命名函数,该函数作为参数传递给atom.commands.add()并出现相同的错误。

我在Linux上。 atom --version返回:

Atom    : 1.46.0
Electron: 4.2.12
Chrome  : 69.0.3497.128
Node    : 10.11.0
coffeescript atom-editor
1个回答
0
投票

您的解决方案是正确的方向-该代码是JavaScript,而不是CoffeeScript。

看起来您引用的'"Composed" Commands'文档在示例中同时使用了JavaScript和CoffeeScript。

要从JavaScript转换:

atom.commands.add('atom-text-editor', 'custom:cut-line', function () {
  const editor = this.getModel();
  editor.selectLinesContainingCursors();
  editor.cutSelectedText();
});

到CoffeeScript:

atom.commands.add 'atom-text-editor', 'custom:cut-line',  () ->
  editor = @getModel()
  editor.selectLinesContainingCursors()
  editor.cutSelectedText()
  • 使用参数调用函数时,可以省略括号()
  • 在CoffeeScript中删除了[function,只需使用括号并使用单个->或双箭头=>,其中双箭头与.bind(this)相同,所以在这里不正确。
  • const /let/ var关键字。只需定义没有它们的变量即可。
  • [this.可以替换为@
  • 括号({})包装函数定义是可选的。
  • 没有分号。

如果您想学习CoffeeScript并为社区提供帮助,您可以通过分叉,编辑和提出repository的提取请求来自己修复文档。

或者,您应该在其存储库中的文档中将此错误报告为issue

© www.soinside.com 2019 - 2024. All rights reserved.