我已经试图解决这个问题很长一段时间了,我将感谢您的帮助.
我试过使用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);
}