【发布时间】:2017-07-10 10:29:59
【问题描述】:
考虑一个具有以下目录结构的简单打字稿项目:
| package.json
| tsconfig.json
|
\---src
| app.ts
|
\---foobar
Foo.ts
Bar.ts
tsconfig.json 已配置为使 ./src/ 成为 baseUrl。
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"outDir": "./dist/",
"baseUrl": "./src/"
},
"include": [
"./src/**/*"
],
"exclude": [
"node_modules"
]
}
现在假设我们要在Bar.ts 中导入Foo。我的理解是通过设置baseUrl,我们现在可以使用绝对路径来导入模块
import { Foo } from 'foobar/Foo'
相对于相对路径
import { Foo } from './Foo'
如果我的理解是正确的,typescript编译器应该可以在编译Bar.ts时自动将foobar/Foo解析为./Foo。
import { Foo } from 'foobar/Foo';
export class Bar {
foo: Foo;
constructor(num: number) {
this.foo = new Foo(num);
}
}
运行tsc 编译没有错误。然而,当我们实际查看编译后的Bar.js 时,我们会发现路径没有被正确解析,如果我们要运行它,这会给我们一个找不到模块错误。 p>
"use strict";
const Foo_1 = require("foobar/Foo");
class Bar {
constructor(num) {
this.foo = new Foo_1.Foo(num);
}
}
exports.Bar = Bar;
所以我的问题是:在使用baseUrl 导入模块时,如何让tsc 正确解析绝对路径?或者如果这不是可以做到的,那么baseUrl的目的是什么?
【问题讨论】:
标签: typescript typescript2.0 tsc tsconfig