2016-03-03 2 views
6

Так что большинство примеров, которые я нашел при импорте пакетов jspm в машинописный текст, предположил, что я хотел использовать Systemjs для загрузки и интерпретации их в браузере. Тем не менее, я бы предпочел использовать tsc для сборки модулей commonjs и импортировать только код js, так как мне кажется, что для меня более общий и устойчивый к ошибкам подход.typescript: import jspm libraries

Так что моя структура каталогов выглядит следующим образом:

src/index.ts 
jspm_packages/... 
config.js 
tsconfig.json 

С TSconfig, имеющий следующее содержание:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "noEmitOnError": true, 
    "noImplicitAny": false, 
    "rootDir": "src", 
    "outDir": "target/app", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "declaration": true 
    }, 
    "exclude": [ 
    "jspm_packages", 
    "node_modules", 
    "typings", 
    "target" 
    ] 
} 

Для целей тестирования я установил угловой 2 с jspm install npm:angular2 и пытался импортировать его в моем index.ts via import { bootstrap } from 'angular2/platform/browser';

При работе tsc, я получаю ошибку

src/index.ts(1,27): error TS2307: Cannot find module 'angular2/platform/browser'. 

Теперь я удивляюсь, могу ли я сделать jspm-пакеты известными машинописному шрифту? Я чувствую, что я все это пробовал, удалив jspm_packages из списка исключений tsconfig, переключаясь на разрешение модуля узла или создание модуля systemjs. Возможно, я просто не нашел правильную комбинацию. Любые намеки на то, что попробовать дальше?

+0

Первая строка с сайта JSPM является «_jspm является менеджером пакетов для универсального модуля загрузчика SystemJS, построенный на вершине модуля динамического ES6 loader_». Я не думаю, что использование jspm без system.js - правильный подход здесь. –

ответ

2

Я также борюсь с этой же проблемой, и после некоторых исследований я узнал, что нет хороших решений, позволяющих это пока.

Обходные:

A) Вы можете дублировать свою зависимость и установить его с НПМ. tsc не должен бросать никаких ошибок с момента его разрешения от npm.

B) Измените tsconfig.json и сопоставьте угловой путь jspm. Например,

"baseUrl": ".", 
"paths": { 
    "angular2/*": [ 
     "jspm_packages/npm/[email protected]/*" 
    ], 
    "rxjs/*": [ 
     "jspm_packages/npm/[email protected]/*" 
    ] 
    } 

См. https://github.com/frankwallis/plugin-typescript/tree/master/examples/angular2 для полного примера.

Обратите внимание, что «baseUrl» и «paths» не являются официальными свойствами и доступны только на бета-версии компилятора типов.

Этот вопрос в настоящее время отслеживаются здесь: https://github.com/Microsoft/TypeScript/issues/6012

+0

Я нашел это слишком сложно, так как intellij еще не распознает параметр пути. Я делаю это наоборот и указываю jspm на node_modules – rweng

Смежные вопросы