无法在流星公开目录中查看新文件

当流星应用程序被编译时( meteor build app ),公共目录becomes programsweb.browserapp现在可以使用http://domain.tld/file-in-public-directory.jpg访问开发公共目录public中的所有文件http://domain.tld/file-in-public-directory.jpg

当我将一个新文件放入已编译的公共目录并尝试在浏览器中查看它时,出现错误,说明Meteor没有该网址的路由。 当我在开发公共目录中执行此操作时,它的功能完美无瑕,但不在编译的( meteor build app )中。

我需要这个,因为我想在该目录中上传新文件。

任何帮助?


所以,你必须稍微调整一下,但有一种方法可以通过使用低级别的connectHandlers对象来访问你想要的任何文件夹,特别是对于静态文件。

下面是一个示例,其中有一个名为.images的文件夹(隐藏在Meteor自动刷新中),该文件夹在请求http:// [yoursiteURL] / images / ...时提供图像。

var fs = Npm.require('fs');
WebApp.connectHandlers.use(function(req, res, next) {
  var re = /^/images/(.*)$/.exec(req.url);
  if (re !== null) {   
    var filePath = process.env.PWD 
    + '/.images/' 
    + re[1];
    var data = fs.readFileSync(filePath, data);
    res.writeHead(200, {
      'Content-Type': 'image'
    });
    res.write(data);
    res.end();
  } else {  
    next();
  }
});

您正在使用正则表达式来确定传入请求是否尝试访问/ images /。 如果是这样,我们将使用res.write()来发送带有相应标题的图像

两件注意事项:

1-你不必使用任何特殊的东西(没有包等)来使用Npm.require('fs')因为它内置并可用。

2 - 使用fs.readFileSync有点破解,并且阻塞。 你会想要调整一个高性能的生产应用程序。

希望这可以帮助! 关于connectHandlers更多信息可以在这里找到。


很高兴看到那里的人尝试流星。 这是件好事 - 但同时,它看起来很复杂。 真正帮助我的是使用这个应用程序:metoer-kitchen。 我现在在处理我的项目时使用它。

链接地址: http://www.djcxy.com/p/73411.html

上一篇: Can't view new files in meteors public directory

下一篇: Turning off eslint rule for a specific line