javascript - 如何访问包内的 meteor 包名称?

标签 javascript node.js meteor

我正在创建一个包,并希望在包代码中动态使用包的名称(即用于登录我的/log.js 文件)。

如何访问在 package.js 中定义的变量?

Package.describe({
    name: "author:packagename"
})

因为我不能确定包名是否改变了分离等,我不想对它们进行硬编码。

谢谢

最佳答案

这有点困难,因为打包系统不允许访问它。不过,您可以试一试。

使用 api.exports 创建一个公开可用的全局对象,例如 api.exports("some_global", ["server", "client"]) ;

包中的全局变量(可以是其他任何东西)。

some_global = {}

然后您可以运行它来查找包名称(确保它可以访问 some_global

getPackageName = function() {
    for(var packageName in Package) {
        if(Package[packageName] && Package[packageName].some_global === some_global) return packageName
    } 
}

Meteor.startup(function() {
    console.log(getPackageName()) //=> Should give the package name
});

有点乱。 Meteor 删除了大部分内容,当它处于编译形式时,除了全局 Package 之外,这对解决这个问题没有帮助。对象删除不必要的代码。

我用 _ 进行了快速测试(用于下划线包):

getPackageName = function() {
    for(var packageName in Package) {
        if(Package[packageName] && Package[packageName]._ === _) return packageName 
    }
}

console.log(getPackageName) // => "underscore"

希望对您有所帮助!

关于javascript - 如何访问包内的 meteor 包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245709/

相关文章:

javascript - 我对 setTimeout/clearTimeout 有疑问

javascript - 如何获取 JSON key :value pair 的路径

javascript - 通过node.js登录Linux

javascript - 通过ajax和url更新页面而不重新加载页面(node.js)

javascript - firebase 功能中的 Puppeteer 无法启动 chrome

javascript - 使用 javascript 检测 html5 验证

javascript - Node.js writable.write 返回 false?

javascript - 全局模板助手在meteor部署服务器上未定义

meteor - 用长按/长按事件替换双击

javascript - 为什么 Collection.find() 在我的 Meteor 客户端上不起作用?