Я с трудом пытаюсь импортировать модули lodash. Я настроил свой проект, используя npm + gulp, и продолжаю бить в одну и ту же стену. Я пробовал обычный lodash, но также и lodash-es.
Пакет lodash npm: (в корневом каталоге пакета есть файл index.js)
import * as _ from 'lodash';
Результаты в:
error TS2307: Cannot find module 'lodash'.
Пакет lodash-es npm: (имеет экспорт по умолчанию в lodash.js в корневой папке пакета)
import * as _ from 'lodash-es/lodash';
Результаты в:
error TS2307: Cannot find module 'lodash-es'.
Задача gulp и webstorm сообщают об одной и той же проблеме.
Забавный факт, это не возвращает ошибку:
import 'lodash-es/lodash';
... но, конечно, нет "_" ...
Мой файл tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules"
]
}
Мой gulpfile.js:
var gulp = require('gulp'),
ts = require('gulp-typescript'),
uglify = require('gulp-uglify'),
sourcemaps = require('gulp-sourcemaps'),
tsPath = 'app/**/*.ts';
gulp.task('ts', function () {
var tscConfig = require('./tsconfig.json');
gulp.src([tsPath])
.pipe(sourcemaps.init())
.pipe(ts(tscConfig.compilerOptions))
.pipe(sourcemaps.write('./../js'));
});
gulp.task('watch', function() {
gulp.watch([tsPath], ['ts']);
});
gulp.task('default', ['ts', 'watch']);
Если я правильно понимаю, то moduleResolution: 'node' в моем tsconfig должен указывать операторы импорта на папку node_modules, где установлены lodash и lodash-es. Я также пробовал много разных способов импорта: абсолютные пути, относительные пути, но, похоже, ничего не работает. Любые идеи?
При необходимости я могу предоставить небольшой zip-файл для иллюстрации проблемы.