无法在mongo shell中设置外部编辑器。(Mac OS)

时间:2018-03-17 02:54:45

标签: mongodb

我想在mongo shell中设置一个外部编辑器,但是我收到了这个错误。

sh: /Applications/CodeRunner.app: is a directory
editor exited with error (32256), not applying changes

正如mongodb doc所说,我在启动mongo shell之前执行了以下操作。

export EDITOR='/Applications/CodeRunner.app'
echo $EDITOR
/Applications/CodeRunner.app
open $EDITOR

我确保我可以启动编辑器' CodeRunner'通过运行echo $EDITOR

在此之后,我进入了mongo shell并执行了以下操作,但收到了错误。

var obj = {}
edit obj
sh: /Applications/CodeRunner.app: is a directory
editor exited with error (32256), not applying changes

可以请任何人告诉我我做错了什么以及如何解决这个错误?

1 个答案:

答案 0 :(得分:0)

MacOS .app"文件"您在Finder中看到的实际上是application bundle,其中包含目录和文件结构。您可以通过在ls -laR /Applications/CodeRunner.app的终端会话中列出文件,或者在Finder中右键单击CodeRunner.app并选择"查看包内容"来查看封面。从菜单中。

实际的可执行文件可以在Contents / MacOS目录中找到,因此EDITOR变量的正确设置应为:

EDITOR="/Applications/CodeRunner.app/Contents/MacOS/CodeRunner"

但是,我使用MongoDB 3.6.3 shell测试了CodeRunner 2.3,并且作为mongo shell的编辑器,它没有像预期的那样工作。

设置EDITOR变量并在edit foo shell中运行mongo启动CodeRunner,其中包含一个内容为foo的临时文件(到目前为止,这么好)。遗憾的是,保存此文件或关闭CodeRunner中的选项卡不会将控制权返回给mongo shell。我发现我必须退出CodeRunner应用程序才能返回已编辑的结果并恢复我的mongo shell会话。

如果你的目标是在shell中使用GUI编辑器来实现JavaScript函数,一种方法是将JavaScript代码保存在文件中,并使用load() commandmongo shell中运行它保存在首选编辑器中后。或者,您可以使用代码编辑器查看MongoDB管理工具(有很多,开源和其他)。 DbKoda就是这样一个跨平台和开源的例子。

如果您需要使用数据或查询结果但不需要任何自定义函数,我建议您使用MongoDB Compass等数据管理用户界面。