一开始如何在客户端和服务器端使用环境变量

2023-12-24

当我像这样启动流星项目时,我正在使用环境变量

MYVAR1="foo bar sdf" MYVAR2=0 meteor

然后在文件 [root]/lib/constants.js 中我有

ENV = ["sjobs", "unisight", "dfgdfsgf"];
AUTHENTICATION = true;

if (Meteor.isClient) {
    Meteor.call("getGlobals", function (error, result) {
        "use strict";

        if (error === undefined) {
            AUTHENTICATION = result.AUTHENTICATION;
            ENV= result.ENV;
            console.log(result);
        } else {
            console.error(error);
        }

    });
}

if (Meteor.isServer) {
    var univasENV = ["urb", "unisight", "sjobs", "unicloud"];
    var tmpenv;


    if (process.env.MYVAR2 !== undefined && parseInt(process.env.MYVAR2, 10) === 1) {
        AUTHENTICATION = false;

    }

    if (process.env.MYVAR1 !== undefined) {
        tmpenv = process.env.MYVAR1.split(" ");
        ENV = [];
                _.each(tmpenv, function (value) {
            "use strict";

            if (univasENV.indexOf(value) !== -1) {
                ENV.push(value);

            }
        });
    }
}

在另一个文件 [root]/server/methods.js 中我有:

Meteor.methods({
   getGlobals: function(){
        "use strict";
        console.log(AUTHENTICATION, ENV);
        return {
            auth: AUTHENTICATION,
            env: ENV
        };
    }
});

服务器部分按我的预期工作,但是客户端中的代码是在所有内容都渲染或加载后执行的。这里的问题是 Meteor.call() 运行异步,我无法使用(据我所知)Meteor.wrapAsync()。

我还尝试在集合中写入我需要的那些值,然后从客户端读取它(所有这些都在 [root]/lib/constants.js 中),但它的行为与方法/调用完全相同。

所以问题是如何在一开始就将一些值从服务器传递到客户端?


看来您想在客户端 java 脚本中使用在服务器上设置的环境变量。我会考虑使用 Meteor.settings,这样当您启动 Meteor 时,您就可以在公共密钥下以 json 形式指定各种环境设置。您的客户端代码应该可以使用它。

如果设置对象包含名为 public 的密钥,则 Meteor.settings.public 将在客户端和服务器上可用。 Meteor.settings 的所有其他属性仅在服务器上定义。http://docs.meteor.com/#/full/meteor_settings http://docs.meteor.com/#/full/meteor_settings

希望有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一开始如何在客户端和服务器端使用环境变量 的相关文章

  • 如何更新我的流星项目中的 cordova-plugin-device ?

    当我运行流星项目时 我收到此警告 警告 尝试安装插件 电子邮件受保护 cdn cgi l email protection 但 它的最低版本应为 1 1 1 以确保与 当前平台版本 安装最小 版本以方便起见 但您应该调整您的依赖项 然后 我
  • Iron 路由器中的多个订阅

    我一直在开发一个使用评论功能的应用程序 这导致必须订阅发表评论的集合和评论集合本身 现在看起来像这样
  • 如何让 minimongo.js 在浏览器中运行?

    The minimongo 的 github 演示 https github com mWater minimongo陈述为 客户端 mongo 数据库 通过 http 与服务器同步 还有一个还有一个minimongo 独立 https g
  • Meteor - 使用 Meteor.wrapAsync() 包装 NPM

    我正在尝试使用 Meteor wrapAsync 包装超级代理 NPM 一切正常 直到下面代码的最后一行 这导致我的流星应用程序崩溃 var superagent Meteor npmRequire superagent Example o
  • 将服务连接到现有的流星帐户

    我正在设置一个流星应用程序 其中涉及使用用户名和密码进行注册 然后希望将该帐户与 Facebook 和 Twitter 连接起来 我只需使用帐户包即可轻松启动并运行第一部分 但是当我有一个登录用户调用 Meteor loginWithFac
  • 使用 account.ui 包验证电子邮件

    我想在创建某个用户时发送验证电子邮件 我使用帐户密码包 因此在我的代码中调用任何帐户方法 我在文档中读到我需要调用 Accounts sendVerificationEmail userId email 但问题是我不知道什么时候调用它 我尝
  • 如何在 Ubuntu VirtualBox 中运行 Meteor 应用程序并使用 Windows 主机上的编辑器进行编辑?

    我希望在运行 Ubuntu 的 virtualbox 来宾中运行一个用于开发目的的流星服务器 该项目将位于主机上的一个文件夹内 该文件夹将共享给来宾 该文件夹本身位于 Dropbox 文件夹内 这样我可以在多个虚拟机和工作站之间共享开发 但
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • 了解新的 mongo id 并将其与 Iron-router 一起使用

    我有一个简单的帖子路线来寻找帖子 id 问题是pathFor助手创建这样的路径 ObjectID 52e16453431fc2fba4b6d6a8 我猜 mongoDB 插入已更改 现在 id对象在其内部包含另一个对象 称为 str 这是我
  • mongodb 获取最后插入的文档

    此 Meteor 代码尝试查找集合中的最后一个文档 find userId this userId sort createdAt 1 limit 1 但由于所有文档都是按时间顺序排列的 我想删除createdAt字段 所以一旦被 删除 是否
  • 为什么我的带有帐户包的 Meteor 应用程序没有发送验证电子邮件?

    我正在制作一个流星应用程序 并且添加了 mrt 帐户密码包以及 mrt 帐户 ui bootstrap dropdown 我添加了登录按钮 以便用户可以创建一个帐户 效果很好 我正在使用所有默认值 在服务器上我有代码 Accounts co
  • 带有 CSS 过渡的 Meteor 模板

    当通过模板助手触发 CSS 转换时 Meteor 似乎会跳过这些转换 有办法解决这个问题吗 Example
  • 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    我正在考虑向 Meteor 应用程序添加全文搜索 我知道 MongoDB 现在支持此功能 但我对实现有一些疑问 启用文本搜索功能的最佳方法是什么 textSearchEnabled true 在 Meteor 应用程序中 有没有办法添加索引
  • 如何让 Grunt.js 和 Meteor.js 协同工作?

    我想在我的 Meteor 应用程序中使用简单的复制和串联 但是当 Meteor 在服务器和客户端上运行所有 javascript 文件时 我遇到了问题 而我不希望它们在任何地方运行 它要么只是配置文件 例如Gruntfile js或我想以某
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund
  • 如何设计流星智能包以透明地将应用程序分离到不同的实例中?

    这是对于那些非常熟悉 Meteor 架构的人来说的问题 我正在尝试设计一个智能包 可以透明地运行 Meteor 应用程序的多个 副本 也就是说 给定一个现有的 Meteor 应用程序和几个预定义的用户组 该包可以半自动地 隔离 该应用程序
  • 为 Meteor 数据创建编号列表

    有没有办法获取 Meteor 集合中项目的编号列表的 编号 我知道我可以在 html 中做到这一点 但我觉得如果我可以在 spacebars 中放置一些东西 那么样式会更容易 如果我可以使用更好的术语 请告诉我 像这样的东西 前 20 部电
  • Meteor 的不同数据库和前端

    假设我想在 Meteor 的后端使用与 Mongo 不同的数据库 并且还想在前端使用像 D3 js 这样的可视化库 目前可能吗 如果不自己添加的话 会有多复杂 谢谢 https github com meteor meteor tree m
  • handlebars:如何访问数组?

    我有以下简化文件 channel Channelname users userId 1 userId 2 userId 3 我如何访问 userId each 像这样循环 each channels channel each channel
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un

随机推荐