当前位置: 首页 > 知识库问答 >
问题:

tsc成功编译项目时,ts节点忽略d.ts文件

孙朗
2023-03-14

成功编译我的TypeScript项目后,我打算使用< code>ts-node在VS Code的调试模式下运行它。问题是,< code>ts-node找不到我创建的< code>d.ts文件(而< code>tsc对此没有问题)。

项目结构为:

/
    conf/
    dist/
    src/
        types/
package.json
tsconfig.json

< code>tsconfig.json相关条目有:

{
    "compilerOptions": {
        "target": "es2017",
        "module": "commonjs",
        // "lib": [],
        "sourceMap": true,
        "outDir": "dist",
        "rootDir": "src",
        "moduleResolution": "node",
        "baseUrl": ".",
        "paths": {
            "*": [
                "node_modules/*",
                "src/types/*"
            ]
        },
        // "rootDirs": [],
        // "typeRoots": [],
        // "types": [],
    },
    "include": [
        "src/**/*"
    ]
}

ts-node 找不到的定义文件是 src/types/global.d.ts

import { App } from '../App';

declare global {
    namespace NodeJS {
        interface Global {
            app: App;
        }
    }
}

因此,尝试使用< code>ts-node运行它时,我看到:

TSError: ⨯ Unable to compile TypeScript:
src/boot.ts(15,59): error TS2339: Property 'app' does not exist on type 'Global'.

如何全球化解?我发现< code>///

我的TypeScript版本是3.0.1

共有3个答案

寿伟
2023-03-14

TLDR

tsconfig.json中添加"ts节点":{"文件": true},以使ts节点开发按预期工作

解释:

我在package.json中使用了ts-node-dev,比如:

"scripts": {
    "build": "tsc",
    ...
    "dev": "ts-node-dev src/index.ts"
  },

npm run build工作正常,但npm run-dev失败,我的类型定义文件位于

在我在我的tsconfig.json中添加以下内容后,它开始正常工作

{
  "ts-node": {  "files": true }, // add this
  "compilerOptions": {
     ...
  }
}
张翰音
2023-03-14

从7.0.0中的ts-node开始,启动时不从< code>tsconfig.json加载文件。相反,您应该像这样指定< code> - files

ts-node --files src/boot.ts
齐俊达
2023-03-14

我也遇到了类似的问题,但我无法添加--file,因为我通过mocha注册模块来运行ts-节点(即mocha-r ts-节点/注册…)。

我可以通过在< code>tsconfig.json中添加一个< code>files和一个< code>ts-node部分来解决这个问题,如下所示:

// tsconfig.json
{
  "ts-node": {
    "files": true
  },
  "files": [
    "src/index.ts",
    "src/global.d.ts"
  ],
  "compilerOptions":{
    //...
  }
}
 类似资料:
  • 我有一个Visual Studio 2012 TypeScript项目。当我第一次制作项目时,我添加了 2 个新的 .ts 文件,这些文件是 Framework.ts 此时我不知所措。我看了看csproj文件: 然后是打字稿编译器的执行命令: 这确实也应该构建这些文件。我只是不知道为什么它拒绝。有谁知道如何解决这个问题?

  • 我最近发现如果文件结尾是.I或.ii,gcc会跳过预处理,于是决定试试看。编译不包含stdio.h的hello world程序: 为什么不起作用? GCC版本6.3.0。

  • 忽略编译器警告 格式 #pragma clang push #pragma clang diagnostic ignored "错误类型" // 存在警告的代码 #pragma clang pop > 1.在需要忽略的警告处右键 -- Reveal in Log 2.会给出警告的详细信息,其中包括警告的类型 3.高亮选中的便是这个警告的类型 4.在警告代码处增加如下代码 Command

  • 我们试图从Jenkins构建一个maven工件并将其部署到我们的Nexus存储库管理器中,但是我们在构建过程中遇到了编译错误。这就是我们得到的错误! 错误]无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.5.1:在项目上编译(default-compile)studentapp:编译失败错误]此环境中没有提供编译器。您可能是在JRE上运

  • 我正在尝试将生成的< code>thrift代码编译到我的源代码中。将< code>thrift内容生成到< code > CMAKE _ CURRENT _ BINARY _ DIR 中,然后我使用< code>SYSTEM关键字将生成的cpp文件添加到我的库中。当我试图编译它时,由于我的模块使用< code>-Wsuggest-override进行编译,它无法编译生成的cpp文件,因为< co

  • 问题内容: 我编译的Go代码并未在Linux上以扩展名结尾。 有关在.gitignore文件中忽略这些提示的任何提示? 问题答案: 将您的构建产品与源代码分开。这有几个优点: 您可以同时启动同一代码的许多不同版本,而无需创建多个克隆 可以很容易确定自己确实做了一次清洁工作;将删除越野车将丢失的文件 您可以从源代码树的只读副本(例如CD-ROM)开始构建 您不太可能意外提交生成的文件 将清除您的源代