svg.js + Angular 7.3: сборка в производственном режиме дает 'не конструктор' - PullRequest
1 голос
/ 16 марта 2019

В режиме разработки этот код отлично работает:

app.component.ts

import { Component, OnInit } from '@angular/core';
import SVG from "@svgdotjs/svg.js/src/svg"   //v 3.0.12

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  title = 'svgjs30';
  draw: any

  ngOnInit() {
    this.draw = SVG().addTo('#canvas').viewbox(0, 0, 300, 140)
    var text = this.draw.text('ABCDE')

  }
}

, но в режиме производства (после ngb - prod) Я получаю

main.b6499f06315e700352a1.js:1 ERROR TypeError: du[e] is not a constructor
    at mu (main.b6499f06315e700352a1.js:1)
    at yu (main.b6499f06315e700352a1.js:1)
    at Ul.addTo (main.b6499f06315e700352a1.js:1)
    at t.ngOnInit (main.b6499f06315e700352a1.js:1)
    at main.b6499f06315e700352a1.js:1
    at main.b6499f06315e700352a1.js:1
    at Yo (main.b6499f06315e700352a1.js:1)
    at _s (main.b6499f06315e700352a1.js:1)
    at Object.updateDirectives (main.b6499f06315e700352a1.js:1)
    at Object.updateDirectives (main.b6499f06315e700352a1.js:1)

[trata tata ta]

1 Ответ

2 голосов
/ 05 июня 2019

Это сводка проблем, опубликованных на странице GitHub svg.js:

На момент написания этого пакета npm @svgdotjs/svg.js v0.3.12 содержит код, который основан на вызове Function.name. Существует исправление для этой проблемы в текущей основной ветке, но оно еще не было опубликовано в NPM (более подробная информация здесь: https://github.com/svgdotjs/svg.js/issues/1005).

Решения:

В качестве обходного пути (до публикации следующей версии) вы можете использовать в процессе сборки правила, аналогичные правилам, используемым svg.js при его сборке. В частности, вам нужно будет указать вашему минификатору не искажать определенный список имен функций . Я не уверен, как это будет сделано в Angular 7, но этот пост может быть полезным для начала (Angular 5).

В качестве альтернативы (и я не особо рекомендую это) вы можете скачать последнюю ветку master, запустить команду сборки, а затем скопировать собранный код в исходный каталог и использовать его напрямую вместо пакета NPM.

...