将异步函数导出到其他 javascript 文件时出现问题

问题描述 投票:0回答:1

我是 JavaScript async/await 的新手,似乎无法理解为什么当我使用 async 和 await 与 JS 模块时我的浏览器不会显示任何内容 - 请提出建议!

pokeUtils.js

export async function fetchPokemon(){
    try{
        const pokeName = document.getElementById("pokemonName").value.toLowerCase();
        
        if (!pokeName) { 
            throw new Error("Please enter a Pokemon name!");
        }
        
        const response = await fetch(`https://pokeapi.co/api/v2/pokemon/${pokeName}`);

        if(!response.ok || response.status === 404){
            throw new Error("Could not fetch Pokemon! - " + response.status)
        }

        const data = await response.json();
        return data;
    }
    catch(error){
        console.error(error)
    }
}

main.js

import { fetchPokemon } from "./pokeUtils";

document.getElementById("fetchButton").addEventListener("click", async () => {
    try {
        const data = await fetchPokemon();
        const pokemonSprite = data.sprites.front_default;
        const imgElement = document.getElementById("pokemonImg");
        imgElement.src = pokemonSprite;
        imgElement.style.display = "block";
    }
    catch (error) {
        console.log(error);
    }
});

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fetch a Pokemon!</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>  
    <input type="text" id="pokemonName" placeholder="Enter Pokemon Name?">
    <button id="fetchButton">Fetch Pokemon!</button>
    <img src="" alt="Pokemon Sprite" id="pokemonImg" style="display: none;"> 

    <script type="module" src="main.js"></script>
</body>
</html>

期望看到 Pokemon Sprite 显示在前端,但它没有显示任何内容,并且控制台是空白的

javascript asynchronous async-await
1个回答
0
投票

main.js

更改第一行

import { fetchPokemon } from "./pokeUtils";

进入

import { fetchPokemon } from "./pokeUtils.js";

它会起作用的!

© www.soinside.com 2019 - 2024. All rights reserved.