访问Meteor应用程序的唯一.id

时间:2015-02-12 03:07:55

标签: meteor

我正在编写一个Meteor包,需要知道包含它的app的id - 相对于项目目录保存在.meteor/.id文件中的值。

如何在开发和生产中安全地访问id?

3 个答案:

答案 0 :(得分:1)

使用NPM从服务器端代码可以做到这一点。我刚刚在我的本地项目中测试了以下内容并且它可以工作:

// server-side code

// FYI, Npm.require works in packages only. Use meteorhacks:npm to use 
// in non-package code. In meteor shell you can just use `require`.
var fs = Npm.require('fs'); 
var path = Npm.require('path');

var idPath = path.join(process.env.PWD, '.meteor/.id');
var fileContent = fs.readFileSync(idPath);
var fileContentLines = fileContent.toString().split('\n');

// this will contain the ID
var theId = fileContentLines[fileContentLines.length - 2];

现在,请记住,在生产中,您没有.meteor目录。在构建文件夹中为id运行grep之后,在我看来,ID不会存储在构建中的任何文件中。因此,您需要创建一个构建插件,确保在构建过程中使其可以在某处访问。我可能看起来不够努力,所以我肯定会看一下构建工具的来源,看看它在构建过程中对该ID的作用。

答案 1 :(得分:1)

在Meteor 1.2.1,(和1.3)中,可以通过开发模式下客户端和服务器上的__meteor_runtime_config__.appId变量访问appId。这是没有记录的,所以我们不知道它将来是否可用。

.appId的{​​{1}}属性可用:

  • 在生产模式下(__meteor_runtime_config__时)
  • 在测试模式下(Meteor.isProduction时)
  • 在应用测试模式下(Meteor.isTest时)

答案 2 :(得分:0)

如何使用Meteor Settings文件http://docs.meteor.com/#/full/meteor_settings?它应该是正确的方法,否则你将不得不使用Node.js直接访问文件