Так у меня есть проект, который выглядит примерно так:Импорт внешнего модуля с синтаксисом ES6 и абсолютный путь
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
/src/utilities/common
/app/src/utilities/common
Ни одна из этих работ. Относительный путь ../utilities/common
действительно работает, но относительные пути для общих модулей - это кошмар обслуживания.
Возможно, стоит отметить, что я только что обновился с TS 1.5 до 1.6: с использованием utilities/common
работал в 1.5. Однако я не могу найти упоминания о разрыве изменений в этих строках в 1.6 примечаниях.
Я упоминаю gulpfile.ts
и другие папки, потому что в конечном итоге я хочу, чтобы Gulp получал файлы TS от src
и помещал скомпилированные 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']);
Я не вижу, чтобы последний вариант работал. – KRyan
Перемещенные комментарии в ответ. – Fenton
Ваш скриншот соответствует тому, что я ищу для достижения ('' src' на пути даст мне проблемы позже, но это не часть этого вопроса), но VS Code дает мне ошибку для этой же настройки. Я использую версию 0.9.1, с TypeScript 1.6.2; это то же самое с вами? – KRyan