正在开发一个项目,在该项目中我尝试使用 JavaScript 调用 API。这可能只是我忽略的一个愚蠢的错误,但有谁知道为什么我不断在控制台中收到“找不到对象”消息?
这是我的代码,我有一个index.js以及一个公共script.js。
这是我的index.js
// import Express library and activate it
import express from "express";
const app = express();
// publish our static frontend files
app.use('/',express.static('./public'))
app.get("/api/ethereum", async (req, res) => {
let url = new URL('https://randomuser.me/api/')
const response = await fetch(url.href)
const data = await response.json()
res.send(data)
});
// Start Express
app.listen(process.env.PORT, () => {
console.log(`Express is now Live.`)
console.log(`Public URL: `+ process.env.PUBLIC_URL)
});
这是我的 script.js
const getData = async () =>{
console.log('Hello from script.js')
const response = await fetch('/api/ethereum')
const data = await response.json()
console.log(data)
}
getData()
为了确保它不是实际的 API 不起作用,我使用不同的 API 进行了尝试,这个 随机用户 API 不需要密钥。然而同样的问题出现了...帮忙吗?
您在 script.js 中错过了“await fetch('http://localhost:3000/api/ethereum')”
演示 另存为
server.js
const express = require('express');
const app = express();
app.get("/api/ethereum", async (req, res) => {
let url = new URL('https://freetestapi.com/api/v1/animals?search=Lion')
const response = await fetch(url.href)
const data = await response.json()
res.send(data)
});
// Start the server
const port = 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
另存为
script.js
const getData = async () => {
console.log('Hello from script.js')
const response = await fetch('http://localhost:3000/api/ethereum')
const data = await response.json()
console.log(data)
}
getData()
npm install express
node server.js
node script.js