- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我懂了
TypeError: Cannot read property 'status' of undefined
当尝试使用 supertest 将文件上传到简单的 Restify 服务器时,并且打开了 gzipResponse
。
版本等:
$ npm list | grep 'super\|mocha\|restify'
├─┬ mocha@2.4.5
├─┬ restify@4.0.4
└─┬ supertest@1.2.0
└─┬ superagent@1.8.3
$ node -v
v5.5.0
服务器:
const restify = require('restify');
const server = restify.createServer();
server.use(restify.gzipResponse());
server.put('image', (req, res) => {
res.send(200);
});
module.exports = server;
测试:
const request = require('supertest');
const server = require('./index');
const path = require('path');
describe('insertImage', function () {
it('should send an image', done => {
request(server)
.put('/image')
.attach('image', path.join(__dirname, 'pc.png'))
.expect(200, done);
});
});
禁用gzipResponse
时测试将通过,如果没有附加文件也将通过。
我不确定这个问题是否与 superagent/supertest 相关,或者问题是否出在 Restify/gzip 上。如有任何帮助,我们将不胜感激。
最佳答案
我认为这可能是您的项目的服务器配置问题。我认为supertest和 superagent处理 gzip 响应就好了。
这是我编写的摩卡测试片段,显示它的工作原理。当然,这是使用 Express 服务器,但它仍然启用了 gzip 压缩。
var express = require('express');
var supertest = require('supertest');
var compression = require('compression');
var path = require('path');
var app = express();
app.use(compression());
app.get('/test', function(req, res) {
res.sendStatus(200);
});
app.put('/image', function(req, res) {
res.sendStatus(200);
});
describe('Test gzip with file upload', function(){
it('Get a test page', function(done) {
supertest(app)
.get('/test')
.expect(200)
.end(function(err, res){
if (err) return done(err);
done();
});
});
it('Upload an image', function(done) {
supertest(app)
.put('/image')
.attach('image', path.join(__dirname, 'pc.png'))
.expect(200)
.end(function(err, res){
if (err) return done(err);
done();
});
});
});
虽然我没有太多使用restify,但我只是创建了一个使用restify作为服务器的快速示例,并且使用supertest的测试仍然通过。在上面的示例中,您需要添加 server.listen 调用吗?
var supertest = require('supertest');
var restify = require('restify');
var path = require('path');
var server = restify.createServer();
server.use(restify.gzipResponse());
server.get('/test', function(req, res) {
res.send(200);
});
server.put('/image', function(req, res) {
res.send(200);
});
server.listen(3000, function() {
console.log('%s listening at %s', server.name, server.url);
});
describe('Test gzip with file upload', function(){
it('Get a test page', function(done) {
supertest(server)
.get('/test')
.expect(200)
.end(function(err, res){
if (err) return done(err);
done();
});
});
it('Upload an image', function(done) {
supertest(server)
.put('/image')
.attach('image', path.join(__dirname, 'neo.jpg'))
.expect(200)
.end(function(err, res){
if (err) return done(err);
done();
});
});
});
关于javascript - Supertest + Restify gzip响应文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36306505/
我在一个节点 js 服务器上工作,并使用 bluebird 来实现 promise 。我了解如何使用 promise ,但我的问题是如何处理 promise 返回的错误。我尝试了简单的解决方案 - 只
我是开发 Web 服务的初学者,我有一个带有 node js 和模块 restify 的服务器,我想使用模块 OAuth2-restify 添加身份验证。但是当我努力准备获取 token 的请求时。我
我正在使用 REST 架构来创建在 Restifyjs 中创建的 Web 应用程序,其前端是在 Angular JS 中,两者都在不同的域上运行。例如,我的本地 Restify 正在 locahost
也在官方 Restify repo 中询问:#1224 你好, 是否有可能有一个默认格式化程序可以处理任何未定义的接受类型。 例如: restify.createServer({ format
我正在为 Node 使用 restify 来创建一个简单的 API。我想要一个目录 /public,人们可以在其中简单地浏览到该目录并下载他们浏览到的文件。 为了完成这个,我在/routes/publ
我正在尝试创建一个 REST API 服务器,它可以使用 node.js restify 接受图像上传。我在 http://restify.com/ 查看了文档但无法确定 restify 是否支持作为
我是 javascript 世界的新手,我正在尝试创建一个“基本”RESTful 应用程序。到目前为止,我发现 restify 框架似乎是完成此任务的最佳框架之一,因为 Express 也更倾向于处理
我想安装 restify在我的 Windows 机器上使用 npm。 出现错误,无法安装。 查看日志文件时出错 info dtrace-provider@0.2.8 Failed to exec in
我对 Restify 中客户端的目的感到困惑: http://mcavage.me/node-restify/#JsonClient 它们本身是基于 Node.js 构建的,就像服务器部分一样。我是否
来自 express ,我有这样的路线 server.get('/some/route/*', function(req, res) { // accessing wildcard c
我正在尝试使用 node.js restify 编写 Restful 应用程序。这是我的应用程序代码: var restify = require('restify'); var server = r
目前我使用 Node 模块 jwtRestify 进行身份验证。我有一个问题,我想从身份验证中排除一些路径,这没有问题: server.use(jwtRestify({ secret: config.
我熟悉 gulp 以及在单个配置文件中为每个环境进行不同配置的能力。这样运行 gulp dev 将允许您使用开发环境的配置启动服务器,gulp staging 用于暂存,gulp prod 来回生产。
我正在使用 restify .在 POST 上,它获取一个 JSON 对象并将值存储到数据库中。 现在我还需要上传图片。 场景是:上传图片,将其调整为指定尺寸(3 种类型的缩略图)并将它们全部保存在服
我有一个基于 Node 和 Restify 插件的用 JavaScript 编写的 REST 应用程序。 我设置了一些 REST 函数: var server = restify.createServ
我正在使用这里的restify-oauth2存储库: https://github.com/domenic/restify-oauth2 在自述文件中提到了 tokenExpirationTime 但
这就是当我尝试让 Facebook 为我的机器人验证我的 URL 时得到的结果。我知道这是一个数据类型问题。我发送回一个字符串而不是一个整数。我的代码如下所示: server.get("/webhoo
我懂了 TypeError: Cannot read property 'status' of undefined 当尝试使用 supertest 将文件上传到简单的 Restify 服务器时,并且打
我的以下代码不起作用: var server = restify.createServer( ... ); server .get('/', function(req,res,next){ res
我正在尝试使用以下代码通过 Restify 提供静态文件。 app.get(/.*/, restify.serveStatic({ directory: __dirname + '/publi
我是一名优秀的程序员,十分优秀!