Grunt Typescript не может найти угловое ядро

Вопрос

Почему мой компилятор Grunt Typescript не может найти угловое ядро?

Я думаю, это как-то связано с путями, поэтому компилятор не может найти библиотеки в каталоге node_modules.

ошибка

typescript/add.component.ts(1,25): ошибка TS2307: не удается найти модуль "angular2/core".

Настроить

Задача Gruntfile.js

typescript: {
    all: {
        src: ['typescript/**/*.ts'],
        dest: 'javascript/frontend',
        options: {
            target: "es5",
            module: "system",
            moduleResolution: "node",
            emitDecoratorMetadata: true,
            experimentalDecorators: true,
            removeComments: false,
            noImplicitAny: false
        }
}

машинопись / add.component.ts

import {Component} from 'angular2/core';

@Component({
    selector: 'mytest',
    template: '<h1>test</h1>'
})
export class AppComponent { }

node_modules

  • Включает в себя angular2
  • Включает машинопись

Пути к файлам

app -- node_modules
    -- typescript
         -- app.component.ts
    -- Gruntfile.js
    -- package.json

Использованные библиотеки / рамки / учебники

1 ответ

Решение

Просто сейчас у меня была точно такая же проблема. Запуск grunt в подробном режиме показал содержимое файла конфигурации ts, сгенерированного из конфигурации grunt. Если присмотреться повнимательнее, выяснилось, что опция moduleResolution вообще не используется. Но, с другой стороны, это не было описано на официальной странице машинописного текста.

В любом случае, короткая история: вместо этого я использовал пакет grunt-ts, и все сработало хорошо! Я выложил мой конфиг ниже для вашего удобства:-)

module.exports = function(grunt) {

  grunt.initConfig({
    ts: {
      base: {
        src: ['src/**/*.ts'],
        dest: 'dist',
        options: {
          module: 'system', 
          moduleResolution: 'node',
          target: 'es5',
          experimentalDecorators: true,
          emitDecoratorMetadata: true,
          noImplicitAny: false
        }
      }
    }
  });

  grunt.loadNpmTasks('grunt-ts');


  grunt.registerTask('default', ['ts']);
};

Другие вопросы по тегам