更新:我找到了该问题的解决方案/解决方法。我将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
您的解决方案是正确的方向-该代码是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()
()
。function
,只需使用括号并使用单个->
或双箭头=>
,其中双箭头与.bind(this)
相同,所以在这里不正确。const
/let
/ var
关键字。只需定义没有它们的变量即可。this.
可以替换为@
。{}
)包装函数定义是可选的。如果您想学习CoffeeScript并为社区提供帮助,您可以通过分叉,编辑和提出repository的提取请求来自己修复文档。
或者,您应该在其存储库中的文档中将此错误报告为issue。