meteor - 动态将文件插入 meteor 公用文件夹而不隐藏它

标签 meteor

我有一个生成图像的 meteor 应用程序。生成它们后,我想为他们服务。但是,每次我写入公用文件夹时, meteor 服务器都会重新启动。
我搜索了一个解决方案,发现了几种解决方法:

  • 在项目文件夹之外提供文件-目前,我不知道该如何实现,我是否需要编写某种集成到 meteor 中的中间件?
  • public/中的文件夹添加一个波浪号〜-似乎使 meteor 完全忽略该文件夹,当尝试访问该文件夹中的文件时,我被重定向到了我的根页面。
  • 在生产模式下运行 meteor 。对我来说似乎是一个肮脏的解决方法。现在,meteor run --production仍然会重新启动服务器,因此我必须捆绑我的应用程序,每次都重新安装光纤,设置我的环境变量,然后运行该应用程序。每次我改变一些东西。

  • 还有其他解决方案吗?

    最佳答案

    接受的答案对我不起作用,但是从 0.6.6.3 版本开始,您可以执行以下操作:

    var fs = Npm.require('fs');
    WebApp.connectHandlers.use(function(req, res, next) {
        var re = /^\/url_path\/(.*)$/.exec(req.url);
        if (re !== null) {   // Only handle URLs that start with /url_path/*
            var filePath = process.env.PWD + '/.server_path/' + re[1];
            var data = fs.readFileSync(filePath, data);
            res.writeHead(200, {
                    'Content-Type': 'image'
                });
            res.write(data);
            res.end();
        } else {  // Other urls will have default behaviors
            next();
        }
    });
    

    笔记
  • process.env.PWD将为您提供项目根
  • (如果您计划将文件放入项目中)
  • 不要使用publicprivate meteor 文件夹
  • 使用点文件夹(例如,隐藏文件夹,例如:.uploads)

  • 不遵守这两个条件将导致本地 meteor 在每次上载时重新启动,除非您使用以下命令运行 meteor 应用程序:meteor run --production

    关于meteor - 动态将文件插入 meteor 公用文件夹而不隐藏它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17740790/

    相关文章:

    javascript - MeteorJS 在重新加载时不运行外部 script.js?

    在 Accounts.createUser 上禁止 Meteor 注册

    meteor - if is not equal in blaze 怎么写

    meteor - 使用 Meteor 在 Linux 中安装 Meteorite?

    javascript - 如果 doc 有 child ,请删除所有 child ,如果 child 有更多 child ,请删除这些 child

    node.js - 在 meteor 中使用 Mongo 聚合

    javascript - MeteorJS 调用方法时出错 'insertLesson' : Method 'insertLesson' not found [404]

    mongodb 获取最后插入的文档

    javascript - meteor :意外的标记}

    node.js - 在 Ubuntu 14.04.x 上安装 Meteor JS