2016-12-09 4 views
5

Я пытаюсь импортировать модуль в файл машинописного текста, а затем связывать его с Rollup.js.Ошибка: незаконное переназначение для импорта

Но я получаю сообщение об ошибке, которое предотвращает выполнение Rollup.

Импорт:

import * as mapboxgl from 'mapbox-gl'; 

(mapboxgl as any).accessToken = this.accessToken; 
this.map = new mapbox.Map({...}); 

Когда я бег tsc нет никаких сообщений об ошибках, но потом, когда я бег:

$ rollup -c rollup.config.js 

Illegal reassignment to import 'mapboxgl' 
Error: Illegal reassignment to import 'mapboxgl' 
at error (C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\utils\error.js:2:14) 
at disallowIllegalReassignment (C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\nodes\shared\disallowIllegalReassignment.js:9:4) 
at Node.bind (C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\nodes\AssignmentExpression.js:12:3) 
at C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\Node.js:6:34 
at Node.eachChild (C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\Node.js:21:5) 
at Node.bind (C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\Node.js:6:8) 
at Node.bind (C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\nodes\BlockStatement.js:8:9) 
at Node.bind (C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\nodes\FunctionExpression.js:7:13) 
at C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\Node.js:6:34 
at Node.eachChild (C:\Users\m.wilson\AppData\Roaming\npm\node_modules\rollup\src\ast\Node.js:21:5) 
Type rollup --help for help, or visit https://github.com/rollup/rollup/wiki 

Я сузил, что ошибка возникает только при (mapboxgl as any).accessToken = this.accessToken; настоящее.

Моего rollup.config.js выглядит следующим образом:

export default { 
    moduleName: "mapbox.core", 
    entry: 'src/js/index.js', 
    format: 'umd', 
    dest: 'core/core.umd.js', 
    sourceMap: true, 
    globals: { 
    'mapbox-gl': 'mapboxgl' 
    } 
}; 
+0

Посмотрите https://github.com/rollup/rollup/issues/436 –

+0

@OweRReLoaDeD Я думаю, что мой вопрос был другой, увидеть мой ответ на то, как я установил его –

ответ

1

Довольно раздражают и не совсем уверен, почему это должно быть сделано таким образом, но мне удалось избежать ошибок и все еще получить модуль mapbox-gl работать с помощи назначить функцию, чтобы установить accessToken на mapboxgl

Так я изменил:

import * as mapboxgl from 'mapbox-gl'; 

(mapboxgl as any).accessToken = this.accessToken; 
this.map = new mapbox.Map({...}); 

для этого:

import * as mapboxgl from 'mapbox-gl'; 

this.assign(mapbox, "accessToken", this.accessToken); 
this.map = new mapbox.Map({...}); 

/* 
* 
* credit to this answer for the assign function: 
* http://stackoverflow.com/a/13719799/2393347 
* 
*/ 
private assign(obj: any, prop: any, value: any) { 
    if (typeof prop === "string") 
     prop = prop.split("."); 

    if (prop.length > 1) { 
     var e = prop.shift(); 
     this.assign(obj[e] = 
       Object.prototype.toString.call(obj[e]) === "[object Object]" 
       ? obj[e] 
       : {}, 
      prop, 
      value); 
    } else 
     obj[prop[0]] = value; 
} 
Смежные вопросы