Javascript TypeScript编译器忽略tsconfig.json中的声明文件

Javascript TypeScript编译器忽略tsconfig.json中的声明文件,javascript,node.js,typescript,gulp,browserify,Javascript,Node.js,Typescript,Gulp,Browserify,我目前正试图为typescript REST使用者设置一个开发环境,但遇到了以下问题:编译器似乎介意在将键入放在.ts源文件中时对其进行引用,但当我试图通过tsconfig.json中的单个.d.ts文件管理引用时,却完全忽略了这些引用 我在尝试编译以下代码时遇到错误TS2307:找不到模块“请求”。: import * as request from 'request'; module HTTPClient { ... } 这是我的tsconfig.json文件: { "com

我目前正试图为typescript REST使用者设置一个开发环境,但遇到了以下问题:编译器似乎介意在将键入放在.ts源文件中时对其进行引用,但当我试图通过tsconfig.json中的单个.d.ts文件管理引用时,却完全忽略了这些引用

我在尝试编译以下代码时遇到
错误TS2307:找不到模块“请求”。

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"
  ]
}
这是我用来编译和捆绑所有东西的代码:

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
中安装并引用了请求的环境定义。这可能与我使用browserify解析模块的方式有关吗?任何帮助都将不胜感激。

问题是由两件事引起的:

首先,如果您首先使用gulp typescript编译代码,然后仅将其与browserify捆绑(不使用tsify),那么您可以选择如何配置编译器。如果选择使用tsconfig.json对其进行配置,则首先需要使用gulp TypeScript创建一个TypeScript项目对象,如下所示:

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:Duplicate identifier”错误:解决这个问题只需将“typings/main.d.ts”移到“exclude”部分以避免重复

注意:打字版本确实过时了;如果遇到此问题,请更新它