如我所见,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-pathGJS_PATH问题。这很明显,但是功能不那么强大。如果我们没有更好的解决方案,那么我们就可以生存。)

    最佳答案

    您需要设置或修改imports.searchPath(这并不明显,因为它不会与for (x in imports)print(x)一起显示)。所以这:

    imports.searchPath.unshift('.');
    var foo = imports.foo;
    

    导入文件“foo.js”作为foo对象。

    这与Seed兼容,尽管imports知道它具有searchPath

    (此答案的早期版本实质上准确性较低,更具煽动性。对不起)。

    10-01 15:28