【问题标题】:TypeScript tsc does not respond anythingTypeScript tsc 没有任何响应
【发布时间】:2020-03-05 17:10:15
【问题描述】:

我是 TypeScript 新手。

我正在将自己用 JS 编写的 React.js 项目迁移到 TypeScript。
我修复了所有错误,并检查了它在 npm start 上运行良好。
但是当我尝试用 tsc 编译时,它永远不会工作,也永远不会显示任何日志。
但正如您所见,tsc -v 有效。

我在 VSCode 中尝试了 Ctrl+Shift+B,但它也显示相同的结果,没有。

在我的tsconfig.json 中,我刚刚将outDir 添加到自动生成的tsconfig.json 中。

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react",
    "outDir": "./dist"
  },
  "include": [
    "./src/*"
  ]
}

有什么办法可以解决吗?
提前致谢。

【问题讨论】:

  • 你检查'dist'文件夹是否有js文件?编译器可以在没有任何输出的情况下静默结束。尝试使用“--extendedDiagnostics”选项运行它。
  • @Michal 是的,我检查了 dist。不存在文件。 --extendedDiagnostics 显示 283 个文件和 92063 行...但 idk 是正确的数字
  • 看起来“noEmit”编译器选项是这里的问题。将其设置为 false 或将其删除,因为它的默认值为 false。
  • @Michal 哦,谢谢。有效。请添加您的评论作为答案。我会检查这是正确的答案。我不明白为什么 CRA 团队制作 noEmit: true for default...
  • @Michal Ah.. 我还发现npm run build 仅在noEmit: true 时有效...

标签: reactjs typescript tsc


【解决方案1】:

如果应用是使用 CRA 脚本创建的,我会坚持使用预先存在的脚本命令 build (npm run build) 在 package.json 中定义。

在这种情况下,tsc 仅用于类型检查,这就是 noEmit 设置为 true 的原因。 build 命令执行 react-scripts build 脚本,该脚本在后台使用 Webpack 加载和编译 typescript 为 javascript。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2012-06-04
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多