我已经试图解决这个问题很长一段时间了,我将感谢您的帮助.

我试过使用Moralis的NodeJS库,它在我的本地服务器上工作,但在开发服务器上不起作用,返回未定义,所以我回到了AXIOS;

我try 更改标题类型.

已try 使用.Send而不是.json

已try 将响应置于状态(200)

已try 将其作为完整回复发送

Log(Response)从终端获得相同的结果


这是路由和里面的AXIOS

import express from "express";
import axios from 'axios';
import { chainIdAliases, wrappedNatives } from "../constants";
import { envVars } from "../server";

const moralis = express.Router();

moralis.get('/get_user_tokens/', (req, res): any => {
    const { address, chainId }: any = req.query
    const options = {
        method: 'GET',
        url: `https://deep-index.moralis.io/api/v2/${address}/erc20`,
        params: { chain: chainIdAliases[chainId] },
        headers: { accept: 'application/json', 'X-API-Key': envVars.MORALIS }
    };
    axios.request(options)
        .then((response) => {
            res.status(200).json(response.data)
        }).catch((error) => {
            res.status(400).json(error);
        });
});


export default moralis

这就是我得到的结果

data: '\x1F�\b\x00\x00\x00\x00\x00\x00\x03��OK\x031\x10��RrRXJ�N�=�B�"Bۓ�L&I[��H�Ŋ����t�\n' +
    '�9�\x0E��{��v�)u�\x18�6�=�\x19?P\x06���6F@\rZb\x02�6\x03*�\x109\x05rJ�g\x15�M�f�٤\x1C�1��U�\x7FmCi~�MY\x15Vw����n�oC���k��6-6=���X�\x06;��\x0B��cu�-�����\x04y��Y\x02\x10�\x04��a\n' +
    "\\\x07��'��]�_�\x16i�N��r>\x1D�����n\x18�-���/J\x13�O�\x04Dc\x1D\x00�L�8�*ȔT��t\x16d�I��L\x16�]\ru�����_e�R\t1��\f�;�5D�*��$\r�\x1C�p|Pv�m�\x17|\x1E}\x16�����R�\x14F\x1B�\x11�z����\x1D\x00\x00��\x03\x00R\x1A9!�\x02\x00\x00

当我在我的客户端使用相同的函数时,它就像一个护身符,这就是为什么我认为这是关于Express或正文解析器的,我的应用程序中任何其他不使用AXIOS的端点都运行得很好.

这就是express .

import bodyParser from "body-parser";
import express from "express";
import helmet from "helmet";
import morgan from "morgan";

// Routes
import moralis from "./routes/moralis";
import receipts from "./routes/receipts";

const init = () => {
    //initialize app
    const app = express();
    // adding Helmet to enhance your API's security
    app.use(helmet());
    // Bodyparser middleware
    app.use(bodyParser.json());
    // adding morgan to log HTTP requests
    app.use(morgan('dev'));
    // Routes
    app.use("/api/receipts", receipts);
    app.use("/api/moralis", moralis);
    return app;
};

export default init

这是server.ts

import { createServer } from "http";
import mongoose from "mongoose";
import { Server } from 'socket.io';
import init from './express';
import dotenv from "dotenv"; 

dotenv.config()
// Export Env Vars
export const envVars = {
  MORALIS: process.env.MORALIS_API_SECRET
}
//Init Server
const server = createServer(init());
//establish socket.io connection
const io = new Server(server);
io.of('/socket').on('connection', (socket) => {
  console.log('socket.io: User connected: ', socket.id);

  socket.on('disconnect', () => {
    console.log('socket.io: User disconnected: ', socket.id);
  });
});
//Port Config
const port = process.env.NODE_ENV === 'dev' ? 5000 : process.env.PORT;
//start the server
server.listen(port, () => {
  console.log(`Server up and running at port ${port} !`);
});
// DB Config
const db = process.env.MONGO_URI as string;
// Connect to MongoDB
mongoose.connect(db, {});
const connection = mongoose.connection;
connection.once('open', () => {
  console.log('MongoDB successfully connected')
  console.log('Setting change streams');
  //Listen to new Receipts
  const receiptsChangeStream = connection.collection('receipts').watch();
  receiptsChangeStream.on('change', (change: any) => {
    const { from, to, txHash } = change.fullDocument
    switch (change.operationType) {
      case 'insert':
        io.of('/socket').emit('newReceipt', { from, to, txHash });
        break;
    }
  });
});
connection.on('error', (error) => console.log('Error: ' + error));
//On New Pending Receipt
export const emitPending = (newPending: any) => {
  io.of('/socket').emit('newPending', newPending);
}

推荐答案

在v1.2.1中修复了此错误.

需要在axios.get头中加上Accept-Encodingapplication/json.

known defect.美元

axios v1.2.0中默认为gzip

将此选项用于Axios Get Call

    const options = {
        method: 'GET',
        url: `https://deep-index.moralis.io/api/v2/${address}/erc20`,
        params: { chain: chainIdAliases[chainId] },
        headers: {
              accept: 'application/json',
              'Accept-Encoding': 'application/json',
             'X-API-Key': envVars.MORALIS,
        }
    };

Node.js相关问答推荐

postgresql层与应用层的序列化

如何在RavenDB中执行JS索引?

Mongoose-不会更新数组中的属性值

MongoDB的方面查询的Postgres类似功能

为什么我收到此错误:MissingSchemaError:架构尚未为模型&业务&注册

如何从谷歌云中部署的应用程序连接到mongoDB Atlas?

动态设置元数据,无需重复请求 NextJS 13

TypeScript Eslint警告了一个AWS客户端构造函数(dynamodb),但没有警告另一个(s3)

如何设置 Puppeteer Select 器的唯一性?

$not 的聚合版本是什么?

如何修改这个flake.nix,这样我就不用每次加载环境都加载nix包了

为什么 $or 在带有正则表达式的mongoose 中不能正常工作

NodeJS 中的流 API 数据如何流动?

如何使动态私有IP地址静态?

在 ExpressJS 中将变量传递给 JavaScript

mongoose 模式中的嵌套对象

npm WARN 不推荐使用 graceful-fs@3.0.8:graceful-fs 版本 3

Node.js 17.0.1 Gatsby 错误-数字信封 routine ::不支持 ... ERR_OSSL_EVP_UNSUPPORTED

Javascript在try块内设置const变量

续集findbyid不是一个函数,但显然findAll是