TypeScript + moment.js:错误TS2307:无法找到模块'时刻'

时间:2017-07-06 08:13:45

标签: javascript angularjs typescript gulp momentjs

我正在开发一个网络应用程序,使用角度1.5,打字稿2.4.0,时刻:2.18.1,以及用于项目组装的gulp。

这是我的tsconfig.json

{
  "files": [
    "src/app/main.ts",
    "types/**/*.ts"
  ],
  "compilerOptions": {
    "noImplicitAny": false,
    "target": "es2015",
    "allowSyntheticDefaultImports": true
  }
}

date-range-picker.component.ts内。我按照main documentation

中的建议导入了时刻库
import * as moment from 'moment'; 

哪个适用于依赖tsify插件的主要gulp项目组装任务。:

var browserifyIt = browserify({
    basedir: '.',
    debug: true,
    entries: paths.browserifyEntries,
    cache: {},
    packageCache: {}
}).plugin(tsify);

gulp.task('bundle', ['views'], function () {
    return browserifyIt
        .transform('babelify', {
            presets: ['es2015'],
            extensions: ['.ts']
        })
        .bundle()
        .on('error', interceptErrors)
        .pipe(source(fileNames.buildJs))
        .pipe(ngAnnotate())
        .pipe(buffer())
        .pipe(sourcemaps.init({loadMaps: true}))
        .pipe(sourcemaps.write(paths.sourcemapPath))
        .pipe(gulp.dest(paths.build));
});

但是为了编译测试我决定使用tsProject()的任务:

const testSrcPaths = {
    ....,
    componentTests: 'src/app/components/**/*.test.ts',
    ....
};
gulp.task('component-tests:compile', function () {
       return gulp.src(testSrcPaths.componentTests).pipe(tsProject())
        .on('error', interceptErrors)
        .js.pipe(gulp.dest(`${paths.testsDist}/components`));
});

导致以下错误:

  

date-range-picker / date-range-picker.component.ts(2,25):错误TS2307:   找不到模块'时刻'。

可以做些什么来解决它?

1 个答案:

答案 0 :(得分:8)

最后,将moduleResolution: "node"添加到compilerOptions解决了我的问题。因此,最终使用了以下tsconfig.json配置:

{
  "files": [
    "src/app/main.ts"
  ],
  "compilerOptions": {
    "noImplicitAny": false,
    "target": "es2015",
    "moduleResolution": "node"
  }
}

以下是link可用于了解有关打字稿模块解析方法的更多信息。