Настройка Systemjs и tsc — ошибка *.ts.js 404 (не найдено)

Я просто пытался создать проект TS + SystemJS для проверки концепции с минимально возможной настройкой - без «стартового набора Angular2» и тому подобного. Я потратил час на гугление и настройку этой настройки, но она все еще не работает.

У меня есть следующая установка:

/src/
 - model.ts
 - bootstrap.ts

/dist/

tsconfig.json
system.config.js
index.html

Мой tsconfig.json

{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es6",
        "noImplicitAny": false,
        "sourceMap": true,
        "removeComments": false,
        "outDir": "./dist/"
    },
    "filesGlob": [
        "./src/**/*.ts"
    ],
    "compileOnSave": true
}

Моя конфигурация SystemJS

System.config({
    paths: {
        // paths serve as alias
        'npm:': 'node_modules/'
    },
    map: {
        testapp: './src'
    },
    baseURL: './src',
    packages: {
        testapp: {
            format: 'register',
            defaultExtension: 'js'
        }
    },

});

Мой index.html

  <script src="/node_modules/systemjs/dist/system-polyfills.js"></script>
    <script src="/node_modules/systemjs/dist/system.src.js"></script>
    <!-- 2. Configure SystemJS -->
    <script src="systemjs.config.js"></script>
    <script>
    System.import('bootstrap.ts')
        .then(function(app) {
            console.log('app bootstrap success!');
        }, console.error.bind(console));
    </script>

В итоге у меня следующая ошибка в консоли:

system.src.js:1051 GET http://0.0.0.0:8080/src/bootstrap.ts.js 404 (Not Found)fetchTextFromURL @ system.src.js:1051....
Error: (SystemJS) XHR error (404 Not Found) loading 

Я запускаю tsc -w на одной вкладке терминала и простой https-сервер на другой.

По-видимому, SystemJS хочет использовать файлы с расширением .ts.js, в то время как tsc генерирует .js и исходные карты, но НЕ .ts.js.

Мне не хватает webpack или gulp для выполнения какой-то части работы? Я думал, что SystemJS и tsc могут выполнять сборку и транспиляцию, но, видимо, в процессе сборки чего-то не хватает. Объяснение по настройке SystemJS, а не исправление ошибки, также было бы очень полезно.


person shershen    schedule 01.11.2016    source источник
comment
System.js не знает, какой транспилятор использовать, потому что вы не указали его в его конфигурации. См. этот пост SO   -  person Mjh    schedule 01.11.2016
comment
Почему вы делаете System.import('bootstrap.ts'), а не System.import('bootstrap.js')?   -  person Nitzan Tomer    schedule 01.11.2016


Ответы (1)


Настройка может быть исправлена ​​следующим образом:

1) как упоминалось @Nitzan Tommer - измените .ts на .js в System.import блокировать

index.html: System.import('bootstrap.js')

2) (SystemJS) требование не определено ошибка исправлена ​​с помощью эта запись - изменить tsconfig.json, чтобы в качестве модулей была "система"

{
    "compilerOptions": {
        "module": "system",
        "target": "es5",
//..

Вот демонстрационное репо, которое я создал с этой настройкой: /systemjs-typescript-простой

person shershen    schedule 01.11.2016