如我所见,Gjs imports
默认情况下仅加载/usr/share/gjs-1.0
和/usr/lib/gjs-1.0
。我想对应用程序进行模块化,就像我们可以对节点进行处理一样,但是我必须找到相对于脚本文件的模块。
我发现这两种添加包含路径的方法:
gjs --include-path=my-modules my-script.js
GJS_PATH=my-modules gjs my-script.js
...但是两者都与当前目录相关,而与文件无关(显然),而它们都需要在命令行中声明,因此这不必要地变得复杂。
如何在Gjs代码中设置包含路径? (所以我可以使它相对于文件)
或者...还有另一种从任何地方导入文件的方法,例如在python中?
(请,您不需要建议使用shellscript启动器来解决
--include-path
和GJS_PATH
问题。这很明显,但是功能不那么强大。如果我们没有更好的解决方案,那么我们就可以生存。) 最佳答案
您需要设置或修改imports.searchPath
(这并不明显,因为它不会与for (x in imports)print(x)
一起显示)。所以这:
imports.searchPath.unshift('.');
var foo = imports.foo;
导入文件“foo.js”作为
foo
对象。这与Seed兼容,尽管
imports
知道它具有searchPath
。(此答案的早期版本实质上准确性较低,更具煽动性。对不起)。