我有一个类似于以下结构的项目:
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';
根目录为
/
,即tsconfig
所在的位置是app/src/
。是的,app/src/utilities/common.ts
导出了一个名为common
的模块。问题在于我遇到了“无法找到模块'/utilities/common'”的错误。我尝试了各种方法:
utilities/common
/src/utilities/common
/app/src/utilities/common
../utilities/common
可以工作,但是对于常见模块使用相对路径是一种维护上的噩梦。值得注意的是,我刚从TS 1.5升级到1.6:在1.5中使用
utilities/common
是可行的。虽然我在1.6的文档中没有找到任何关于此类变化的提及。我提到了
gulpfile.ts
和其他文件夹,因为最终我希望Gulp从src
获取TS文件,并将编译后的JS文件放在bin
中。我有信心正确地配置了Gulp来完成这个任务,使用的是gulp-typescript
,但是为了完整起见,这里是我的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']);
src
会在后面给我带来麻烦,但这不是本问题的一部分),但是 VS Code 在相同的设置下给我报错。我正在使用版本为 0.9.1 的 TypeScript 1.6.2;你也是吗? - KRyantsc
,但1.6绝对是在我的路径中找到的版本,由PowerShell发现并被Visual Studio 2015使用。 我将尝试删除旧版本来看看是否会使事情突然变得可行,但我持怀疑态度。 不幸的是,现在无法做到这一点。 - KRyan