我正在尝试一步一步地将Angular JavaScript (ES5)项目迁移到TypeScript 2.0,我必须承认我很挣扎。
首先我把index。js改成index。并使用推荐的安装类型(npm install --save @types/node
)的方法来代替旧的类型。json方法。
构建设置使用gulp
和browserify
,现在引入tsify
和babelify
。
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下的包。