2017-02-12 4 views
0

Я попытался импортировать FileSaver для своего приложения. И единственный способ, который я получил его на работу именно через следующую командуУгловой модуль изменения от es6 к commonJs последнему

import filesaver = require('filesaver'); 

Тогда я получаю эту ошибку

назначение импорта не может быть использована при ориентации ECMAScript 2015 модулей

Я последовал за решением, изменив модуль внутри tsconfig.json от es6 до commonjs.

Все нормально работает. Однако я беспокоюсь о том, что является следствием перехода от es6 к commonjs. Очевидно, это было правильно по причине?

Есть ли способ сделать это так, что мне не нужно менять?

+0

эквивалентная строка es6 будет 'import * в качестве файлового архива из 'filesaver';' – Claies

ответ

1

Да, если вы используете машинопись, используйте ES6/Машинопись загрузки модулей синтаксис:

import { type } from './module'; 

При компиляции Машинопись на JavaScript, вы можете ориентировать любой модуль загрузчика, который вы хотите:

es6 
system 
commonjs 
AMD 
UMD 

Вы можете настроить систему модуля с помощью tsconfig.json:

"compilerOptions": { 
    ... 
    "module": "commonjs", 
} 

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

Например, если таргетинг «систему» ​​или «CommonJS», то убедитесь, что вы включили совместимый скрипт правильно загрузить модуль (т.е. node_modules/systemjs/DIST/system.js)

Мой совет , если вы пишете свое приложение ng2 в TypeScript

IMHO, es6 обеспечивает самый чистый синтаксис загрузки модуля. Я предпочитаю писать программы Angular2 с помощью TypeScript и использовать языковые функции es6 (включая синтаксис загрузки модуля очистки). Когда дело доходит до компиляции TypeScript в JavaScript, я пытаюсь настроить таргетинг на es5, так как большинство браузеров сегодня обеспечивают почти 100% соответствие без прокладки и используют systemjs в качестве загрузчика модуля (наиболее гибкий, если я хочу изменить форматы позже).

В коде FileServer запишите его в TypeScript и используйте синтаксис загрузки модуля es6. Таким образом, он будет скомпилирован синтаксисом загрузчика модуля, на который вы нацеливаетесь, что должно соответствовать остальным вашим ts-файлам.

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