繁体   English   中英

我尝试在我的 mocha nodejs 测试中上传文件,但我得到了 [Object null prototype] { file: {... }}

[英]i try to upload file in my mocha nodejs test but i got [Object null prototype] { file: { ... }}

我发现到处都是白色的解决方案:

app.use(bodyParser.urlencoded({extended: true}));

我可以用

JSON.stringify(req.files)

但我有办法解决我的问题

我的摩卡测试:

it('a file', async function () {
        const body = { pseudo: 'user', password: 'test@123', mail: 'supermail' };

        const response = await fetch(hostName + '/authentication/register', {
            method: 'post',
            body: JSON.stringify(body),
            headers: { 'Content-Type': 'application/json' }
        })
        const usr = await response.json();
        request.post('/usrAction1/doc')
            .field('token', usr.token)
            .attach('file', 'test/test.pdf')
            .end(function (err, res) {
                if (err) {
                    console.log(err)
                }
                console.log(res.status) // 'success' status
            });
    });

和我的溃败处理程序:

router.post('/doc', async (req, res) => {
        console.log('req.files');
        console.log(req.files)

 })

还有我的 server.js:

import express from 'express'
import authentication from './src/login.js'
import './global/host.js'
import bodyParser from 'body-parser'
import cors from "cors"
import verifyToken from './middleware/auth.js'
import { userAction1, userAction2 } from './src/userAction.js'
import verifyLevel from './middleware/level.js'
import fileUpload from 'express-fileupload';

export default function myApp() {
    const whitelist = [/http:\/\/localhost:*/, /http:\/\/127.0.0.1:*/]

    const corsConfig = { origin: whitelist }

    const app = express();
    const port = hostPort;

    //json encoded
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json())
    app.use(cors(corsConfig))

    // enable files upload
    app.use(fileUpload({
        createParentPath: true
    }));

    app.use('/usrAction1', userAction1())

    app.listen(port, () => {
        console.log(`Example app listening at http://localhost:${port}`);
    });
    return app;
}
myApp();

但不要为我工作。 我还测试了运行表单的白色外部客户端服务器,并将其发送到我测试的地址并执行相同的操作 [对象 null 原型]

谢谢 evry litel 的帮助

我在等待一些帮助,我正在使用我在 stackoverflow 上某处找到的这个 magique 代码:

req.files && Object.keys(req.files)?.map((obj, idx) => { console.log(req.files['file'].data) })

如果有人有更好的主意,我会等待。

感谢所有

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM