【问题标题】:How to get the current directory within a meteor Smart Package如何在流星智能包中获取当前目录
【发布时间】:2015-08-18 02:04:26
【问题描述】:

我正在为要在 Atmosphere 上发布的流星构建一个包,我需要获取安装该包的当前目录。我在包中包含的文件中尝试了process.cwd(),但它获取了我的应用程序的当前目录。该软件包已安装并正常工作,似乎该软件包与该应用程序在同一进程中运行,因此process.cwd() 正在获取当前的应用程序目录。有谁知道获取包当前目录的技巧吗?

这是我在包文件中的内容:

package.js

Package.on_use(function (api) {
    api.use('sync-methods', 'server');
    api.add_files(["lib/api_server.js"], "server");
    api.add_files(["lib/api_client.js"], "client");
});

api_server.js

var cwd = process.cwd();
console.log(cwd);

这显示/home/dknell/meteor-apps/testApp

【问题讨论】:

标签: meteor meteorite


【解决方案1】:

为什么需要当前目录?访问包内的文件?然后添加一个文件作为 n 包资产:

api.add_files(['file.txt'], 'server', {isAsset: true});

然后你可以在你的包中使用Assets.getText('file.txt')阅读它。

【讨论】:

    【解决方案2】:

    如果你不想要内容,而是另一个工具的绝对路径,你可以试试

    var path = Npm.require('path');
    var base = path.resolve('.');
    var assetsBase = path.join(base, '/assets/packages/<author_smart-package-name>');
    

    对于 输入您的包名,但如果其中包含您的流星用户名,请将冒号 (:) 更改为下划线 (_)

    这在 OS X 和 Linux 上似乎没问题,可能也适用于 Windows。

    【讨论】:

      【解决方案3】:

      哎呀,这是针对应用程序内的文件,而不是包。无论如何可能对某人有帮助

      我需要访问一个目录路径来加载文件列表

      // files in /private get built to:
      //      .meteorlocal/build/programs/server/assets/app/
      // base path resolves to:
      //      .meteor/local/build/programs/server
      

      因此您需要手动将“/assets/app”添加到您的路径中。

      直到流星在某个时候改变它。

      如果您有一个更改内容的目录,那么仅仅获取文件的内容是没有帮助的...

      【讨论】:

        猜你喜欢
        • 2014-07-11
        • 2010-10-26
        • 2012-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多