【问题标题】:Missing TypeScript typings with browserify + babelify + tsify使用 browserify + babelify + tsify 缺少 TypeScript 类型
【发布时间】:2017-03-02 08:32:05
【问题描述】:

我正在尝试将 Angular JavaScript (ES5) 项目逐步迁移到 TypeScript 2.0,我必须承认我非常挣扎。
所以首先我将 index.js 更改为 index.ts 并使用 recommended method of installing typings (npm install --save @types/node) 而不是旧的 typings.json 方式。

构建设置使用gulpbrowserify,现在按照建议here 引入tsifybabelify

浏览

//...
.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:找不到名称“require”。

tsify 似乎没有将安装的类型复制到输出目录,导致上述错误。
关于如何解决问题的任何建议?

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

【问题讨论】:

    标签: typescript gulp browserify tsify


    【解决方案1】:

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

    tsconfig.json 中明确添加 typesRoot 选项修复了它。

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

    这个“应该”是默认设置,但由于某种原因,它会搜索 C: 驱动器根目录下的 @types 文件夹。

    来自 TypeScript 文档:

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

    【讨论】:

    • 你用的是什么版本的tsify?
    • "tsify": "^2.0.2"
    • 您能为此创建一个issue 吗?它看起来像一个错误。您不必指定typeRoots。您还可以在问题中包含更多配置吗?我看不出像.tmp/public/... 这样的路径应该如何出现在您的错误消息中。
    猜你喜欢
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 2019-02-07
    相关资源
    最近更新 更多