Javascript 如何访问meteor包内的包名?

Javascript 如何访问meteor包内的包名?,javascript,node.js,meteor,Javascript,Node.js,Meteor,我正在创建一个包,并希望在包代码中动态使用包的名称(即用于登录我的/log.js文件) 如何访问package.js中定义的变量 因为我不能确定包名是否正在更改do到分隔等,所以我不想硬编码它们 谢谢这有点困难,因为包装系统不允许访问它。你可以试试看 使用api.exports创建一个公共可用的全局对象,例如api.exports(“some_global”、“server”、“client”) 包中的全局变量(可以是任何其他变量) 然后,您可以运行它来查找包名(确保它可以访问some\u gl

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

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

因为我不能确定包名是否正在更改do到分隔等,所以我不想硬编码它们


谢谢

这有点困难,因为包装系统不允许访问它。你可以试试看

使用
api.exports
创建一个公共可用的全局对象,例如
api.exports(“some_global”、“server”、“client”)

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

然后,您可以运行它来查找包名(确保它可以访问
some\u 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删除了大部分内容,但在编译时没有帮助,只有用于删除不必要代码的全局
对象除外

我用
\uu
(用于下划线包)对此进行了快速测试:

希望它能有所帮助!

虽然这不是一个“优雅的解决方案”,但效果很好。因此我接受这一方案,并希望MDG能让我们在某个时候从包内部更直接地访问包范围。谢谢!
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
});
getPackageName = function() {
    for(var packageName in Package) {
        if(Package[packageName] && Package[packageName]._ === _) return packageName 
    }
}

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