簡體   English   中英

TypeScript編譯器忽略tsconfig.json中的聲明文件

[英]TypeScript compiler ignores declaration file in tsconfig.json

我目前正在嘗試為打字稿的REST消費者設置一個開發環境,並遇到以下問題:編譯器在將它們放入.ts源文件時似乎會介意打字,但是當我嘗試時完全忽略它們通過tsconfig.json中的單個.d.ts文件管理我的refereneces。

我收到error TS2307: Cannot find module 'request'. 在嘗試編譯以下代碼時:

import * as request from 'request';

module HTTPClient {
 ...   
}

這是我的tsconfig.json文件:

{
  "compilerOptions": {
    "jsx": "react",
    "module": "commonjs",
    "noImplicitAny": true,
    "noEmitOnError": true,
    "outDir": "./build/",
    "preserveConstEnums": true,
    "removeComments": true,
    "target": "ES5",
    "declarationFiles": true,
    "moduleResolution": "classic"
  },

  "exclude": [
    "./node_modules",
    "./build",
    "./tests"
  ],

  "include": [
    "./src/ts/**/*",
    "./typings/main.d.ts"
  ]
}

這是我用來編譯和捆綁所有內容的gulp代碼:

var typescriptProject = typescriptCompiler.createProject(project['tsconfig'], { typescript: typescript });

gulp.task(
    'compile-ts',
    function () {
        return gulp
            .src([ project['ts'] + '**/*{ts, tsx}' ])
            .pipe(typescriptCompiler(typescriptProject))
            .js
            .pipe(gulp.dest(output['js']));
    }
);

gulp.task(
    'bundle-js',
    function () {
        return browserify(output['js'] + 'main.js')
            .bundle()
            .pipe(source('bundle.js'))
            .pipe(gulp.dest(output['web']));
    }
);

我在typings/main.d.ts安裝並引用了Request的環境定義。 這可能與我使用browserify解析模塊的方式有關嗎? 任何幫助將非常感激。

問題是由兩件事引起的:

首先 ,如果您正在使用gulp-typescript首先編譯代碼,然后僅使用browserify捆綁它(不使用tsify),那么您可以選擇如何配置編譯器。 如果選擇使用tsconfig.json進行配置,首先需要使用gulp-typescript創建一個TypeScript Project對象,如下所示:

var typescriptCompiler = require('gulp-typescript');
var typescriptProject = typescriptCompiler.createProject(project['tsconfig'], { typescript: typescript });

然后將從項目中檢索到的源提供給gulp任務中的編譯器:

gulp.task(
    'compile-ts',
    function () {
            return typescriptProject
                .src()
                .pipe(typescriptCompiler(typescriptProject))
                .js
                .pipe(gulp.dest(output['js']));
    }
);

第二個問題是我在消息來源中包括“typings / main.d.ts”。 這導致了一大堆“TS2300:重復標識符”錯誤:解決這個問題只是將“typings / main.d.ts”移到“排除”部分以避免重復。

注意:打字版本確實已經過時了; 如果您遇到此問題,請更新它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM