所以我有一个看起来像这样的项目:
app/
bin/
lib/
src/
main/
submodule.ts
utilities/
common.ts
main.ts
tsconfig.json
gulpfile.js
和 app/src/main/submodule.ts 需要导入 app/src/utilities/common.ts . 我正在尝试使用ES6语法 . 因此,我希望 submodule.ts 中有类似的内容:
import {common} from '/utilities/common';
根 / 的位置是 app/src/ ,因为这是找到 tsconfig 的位置 . 是的, app/src/utilities/common.ts 确实导出名为 common 的模块 .
问题是我得到“找不到模块'/ utilities / common'”错误 . 我尝试过各种各样的事情:
utilities/common
/src/utilities/common
/app/src/utilities/common
这些都不起作用 . ../utilities/common 的相对路径确实有效,但常见模块的相对路径是维护的噩梦 .
值得注意的是,我刚刚从TS 1.5更新到1.6:使用 utilities/common 曾在1.5中工作过 . 然而,我在1.6音符中找不到任何关于这些线路的突破性变化 .
我提到 gulpfile.ts 和其他文件夹,因为最终我希望Gulp从 src 获取TS文件并将编译后的JS文件放在 bin 中 . 我有理由相信我已经使用 gulp-typescript 为此正确配置了Gulp,但为了完成起见,这里是我的 tsconfig.json 和 gulpfile.js .
tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"noEmitOnError": true
},
"filesGlob": [
"./**/*.ts",
"!./typings/**/*.ts"
]
}
gulpfile.js
var gulp = require('gulp');
var ts = require('gulp-typescript');
var less = require('gulp-less');
var sourcemaps = require('gulp-sourcemaps');
var merge = require('merge2');
var path = require('path');
var tsProject = ts.createProject('src/tsconfig.json', { noExternalResolve: true });
gulp.task('html', function () {
gulp.src([
'src/**/*.html',
])
.pipe(gulp.dest('bin'));
});
gulp.task('typescript', function () {
tsProject.src()
.pipe(sourcemaps.init())
.pipe(ts(tsProject))
.js
.pipe(sourcemaps.write())
.pipe(gulp.dest('bin'));
});
gulp.task('less', function () {
gulp.src([
'src/**/*.less',
])
.pipe(sourcemaps.init())
.pipe(less())
.pipe(sourcemaps.write())
.pipe(gulp.dest('bin'))
});
gulp.task('default', ['html', 'typescript', 'less']);