Express服务器发送空的PDF文件

我有一个路由,发送一个PDF文件:

app.get('/teste',function(req,res,next){ res.setHeader('content-type','application/pdf'); res.download(app.get('appPath')+'/teste.pdf'); } 

我尝试使用另一种解决scheme,或多或less做同样的事情:

 app.get('/teste',function(req,res,next){ res.setHeader('content-type','application/pdf'); fs.createReadStream(app.get('appPath')+'/teste.pdf').pipe(res); } 

 app.get('/teste',function(req,res,next){ res.setHeader('content-type','application/pdf'); res.sendfile(app.get('appPath')+'/teste.pdf'); } 

我的问题是,当我在浏览器中询问这条路线时,我收到一个与原始文件页数相同的空pdf文件。

我用app.use(express.bodyParser());configuration了我的快递服务器app.use(express.bodyParser());

任何人都可以帮助我?

我在使用connect-livereload中间件时看到了这个。 问题是connect-livereload是在pdf数据stream中注入一个js代码片段。 它也可能导致其他非HTML数据的问题。 好消息是,这只会在开发过程中引起问题(你不应该在生产中加载这个中间件)。

这是最近修复的,但是很多模板都包含了一个较老的版本,所以请检查你的package.json文件,如果需要的话获取最新版本。 最新的connect-livereload版本是0.5.3。

如果ignore: ['.pdf']行不起作用,可能是由于您不查询具有相关后缀的资源。

例如,如果您查询具有ID的资源:

 localhost:9000/api/export/getExport?destinationId=56179bb36bc51bb00836c3ed 

您不能过滤文件后缀。 你可以做的是通过path过滤:

 app.use( require( 'connect-livereload' )( { ignore: [ /api\/export\/getExport.*/ ] } ) ); 

查看connect-livereload的其他可能选项。