You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Pug中引用TypeScript文件的问题及最佳实践咨询

问题解答

1. TypeScript引用的最佳实践

是的,必须先将TypeScript编译为JavaScript后再在Pug文件中引用。浏览器本身无法直接解析TypeScript代码,直接引用.ts文件时,服务器会错误地将其识别为video/mp2t类型的MIME(这是服务器默认类型匹配的常见问题),最终导致加载报错。

2. TypeScript编译脚本配置

步骤1:配置tsconfig.json

在项目根目录创建tsconfig.json文件,指定编译规则与输出目录,示例配置如下:

{
  "compilerOptions": {
    "target": "ES6",
    "module": "ESNext",
    "outDir": "./dist/javascripts", // 编译后的JS文件输出到dist/javascripts目录
    "strict": true,
    "esModuleInterop": true
  },
  "include": ["./javascripts/**/*.ts"] // 指定需要编译的TS文件所在目录
}

步骤2:添加npm编译脚本

在项目的package.json中添加编译脚本,方便快速执行编译操作:

{
  "scripts": {
    "build:ts": "tsc", // 执行单次编译
    "watch:ts": "tsc --watch" // 监听TS文件变化,自动重新编译
  }
}

运行编译命令:

  • 单次编译:npm run build:ts
  • 实时监听编译:npm run watch:ts

3. 编译到dist目录后的路径问题

不需要将Pug文件和CSS文件移到dist目录,解决路径报错的核心是调整资源引用路径,并配置服务器的静态文件映射:

调整Pug中的JS引用路径

修改你当前的Pug代码,将TS文件的引用替换为编译后的JS文件路径:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Autocomplete!</title>
    <link rel="stylesheet" href="/stylesheets/normalize.css">
    <link rel="stylesheet" href="/stylesheets/autocomplete.css">
    <script src="/dist/javascripts/autocomplete.js"></script> <!-- 修改为编译后的JS路径 -->
  </head>
  <body>
    <div class="app">
      <p>
        <input name="country">
      </p>
    </div>
  </body>
</html>

配置服务器静态目录

以Express服务器为例,同时将原静态资源目录和dist目录设置为静态文件目录,确保服务器能正确找到所有资源:

const express = require('express');
const app = express();

// 配置静态文件目录,优先读取dist目录,再读取原目录资源
app.use(express.static('dist'));
app.use(express.static('.'));

内容的提问来源于stack exchange,提问作者SrdjaNo1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:45:20