缺少使用browserify + babelify + tsify的TypeScript类型



我正在尝试一步一步地将Angular JavaScript (ES5)项目迁移到TypeScript 2.0,我必须承认我很挣扎。
首先我把index。js改成index。并使用推荐的安装类型(npm install --save @types/node)的方法来代替旧的类型。json方法。

构建设置使用gulpbrowserify,现在引入tsifybabelify

browserify

//...
.plugin(tsify)
.transform(babelify, {
      presets: ['es2015'],
      extensions: ['.ts', '.js']
})
//...

tsconfig.json

{
"files": [
    "assets/app/index.ts"
],
"compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
}
}

但是使用

构建失败

TypeScript错误:.tmp/public/app/index.ts(4,15):错误TS2304: Cannot find name 'require'.

tsify似乎没有将安装的类型复制到输出目录,这导致了上面的错误。对如何解决这个问题有什么建议吗?

编辑
复制node_modules/@types文件夹到我的C:驱动器的根消除了错误,但我不知道为什么…

如果有人遇到同样的问题:

tsconfig中显式添加typesRoot选项。json修复。

"typeRoots" : ["./node_modules/@types"]

这个"应该"是默认设置,但由于某种原因,它搜索C: drive root下的@types文件夹。

From TypeScript docs:

如果指定了typeRoots,则只包含typeRoots下的包。

相关内容

  • 没有找到相关文章

最新更新