ค้นหาเว็บไซต์

javascript - NS_ERROR_CORRUPTED_CONTENT ใน Live Server กับไฟล์ JS ที่สร้างจาก TypeScript


ฉันกำลังพยายามสร้างเว็บไซต์ธนาคารแบบง่ายโดยใช้ TypeScript ธรรมชาติ, HTML, และ CSS ในตอนนี้ก่อน แล้วต่อมาจะเพิ่ม API ของ Plaid เพื่อทดสอบการทำงานของมัน ตอนนี้ฉันกำลังทดสอบโครงสร้างโครงการในเครื่องโดยใช้ Live Server ใน Visual Studio Code

โครงสร้างโครงการของฉันมีลักษณะดังนี้:

front-end/
├── dist/
│   ├── main.js
│   ├── login/
│   │   └── login.js
│   ├── dashboard/
│   │   └── dashboard.js
│   └── utils/
│       └── app.js
├── public/
│   ├── index.html
│   ├── login.html
│   └── dashboard.html
├── src/
│   ├── login/
│   │   └── login.ts
│   ├── dashboard/
│   │   └── dashboard.ts
│   └── utils/
│       └── app.ts
└── style/
    └── styles.css

ฉันพบข้อผิดพลาด NS_ERROR_CORRUPTED_CONTENT เมื่อพยายามโหลดไฟล์ app.js ในโมดูล dashboard.js

นี่คือข้อความข้อผิดพลาดจากคอนโซล:

GET http://127.0.0.1:5500/front-end/dist/utils/app NS_ERROR_CORRUPTED_CONTENT
  • ประเภท MIME ถูกตั้งค่าไม่ถูกต้องเป็น text/html แทนที่จะเป็น application/javascript
  • เส้นทางทั้งหมดถูกต้อง และฉันสามารถกด Ctrl + คลิกเพื่อไปยังโมดูลภายใน VS Code ได้
  • ฉันได้ล้างแคชแล้ว รีสตาร์ทเซิร์ฟเวอร์ และสร้างไฟล์ TypeScript ของฉันใหม่โดยใช้ tsc

.

รหัสแดชบอร์ด:

นี่คือโค้ดที่เกี่ยวข้องใน dashboard.js และ app.js:

dashboard.js:

import { fetchBalance, updateBalanceDisplay } from '../utils/app';

export default async function initDashboard() {
    const balance = await fetchBalance();
    updateBalanceDisplay(balance);
}

app.js

export function fetchBalance() {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve(1250.50);
        }, 1000); // Simulate a network delay
    });
}

export function updateBalanceDisplay(balance: number) {
    const balanceElement = document.getElementById('balance');
    if (balanceElement) {
        balanceElement.textContent = `$${balance.toFixed(2)}`;
    }
}

main.js (การกำหนดเส้นทาง)

function handleRouting() {
    const path = window.location.pathname;
    if (path.includes('login.html')) {
        import('./login/login').then(module => {
            module.default();
        });
    } else if (path.includes('dashboard.html')) {
        import('./dashboard/dashboard').then(module => {
            module.default();
        }).catch(error => {
            console.error("Error loading dashboard module:", error);
        });
    }
}
handleRouting();

คำถาม :

ทำไมไฟล์ app.js ถึงถูกส่งพร้อมกับประเภท MIME เป็น text/HTML และฉันจะแก้ไข NS_ERROR_CORRUPTED_CONTENT ในการตั้งค่าของฉันได้อย่างไร?

ฉันได้ลองแล้ว:

Verified the file paths and ensured they're correct relative to the dist folder.
Cleared browser cache and hard-reloaded the page.
Disabled caching in Live Server settings in VS Code.
Tried loading the app.js file directly in the browser, but it still results in the same error

ฉันคาดหวังอย่างน้อยให้มันแสดงตัวเลขที่อยู่ในฟังก์ชันดึงยอดเงิน!!

คำตอบ #1

เพิ่งพบว่า เป็นปัญหาที่ตัวคอมไพเลอร์ เมื่อทำการนำเข้า ส่วนขยายจะถูกลบออก ดังนั้นฉันจึงต้องใช้ '.js' อย่างชัดเจน และตั้งค่า "moduleResolution" ให้เป็น node ในไฟล์ tsconfig.json ดังนี้:

{
  "compilerOptions": {
    "moduleResolution": "node",
    // other options...
  }
}

บทความที่เกี่ยวข้อง