typescript - Hvordan fikse `Klassekonstruktør LitElement kan ikke kalles uten 'new'`?
Jeg setter opp et nytt prosjekt ved å bruke lit-element fra polymer, og byggeoppsettet inkluderer bruk av parcel. Jeg bruker også TypeScript for å skrive koden min.
Jeg begynte med å initialisere npm og la til alle nødvendige avhengigheter:
"dependencies": {
"@polymer/lit-element": "^0.6.5",
"@webcomponents/webcomponentsjs": "^2.2.1"
},
"devDependencies": {
"parcel-bundler": "^1.11.0",
"tslib": "^1.9.3",
"typescript": "^3.2.2"
}
Nå når jeg kjører pakken for å starte med index.html som inkluderer:
@webcomponents/webcomponentsjs/webcomponents-bundle.js
Jeg får en feil som sier:
Class constructor LitElement cannot be invoked without 'new'
Basert på andres forslag har jeg prøvd å sette tsconfig target til "es2016", men dette løser ikke feilen.
min-element.ts
import {
LitElement,
html,
customElement,
property
} from '@polymer/lit-element'
@customElement('ui-text')
export class UiText extends LitElement {
render() {
return html`<p>Hi</p>`
}
}
Svar #1
Etter å ha slitt med det en stund, ser det ut til at parcel (fra v1.12.3) har et problem hvor det ikke tar hensyn til browserslist med mindre index.html er i samme mappe som packages.json, package-lock.json og node_modules. Etter at jeg omorganiserte kildefilene mine og la til "browserslist": ["Chrome > 46"], begynte det å fungere fint.
Svar #2
For øyeblikket gjør foreslått custom-elements-es5-adapter.js egentlig ikke "tilpasning" av det som produseres av parceljs (for Chrome). Det er mye mer om dette emnet i denne saken: https://github.com/Polymer/lit-element/issues/54. Å eksplisitt oppgi målrettede nettlesere i package.json vil hjelpe mye, her er et eksempel:
"browserslist": [
">2%",
"Edge > 14",
"Firefox > 63",
"Chrome > 67"
]
Etterpå kan du sjekke de faktisk målrettede nettleserne med denne uttalelsen ved å kjøre npx browserslist - se syntaksen og mer på https://github.com/browserslist/browserslist
Prosjektstrukturen er ikke et problem, og parceljs vil oppdage browserslist uavhengig av plasseringen av index.html og andre kildefiler.
Dessverre, i mitt tilfelle er IE11-bruken på rundt skremmende 10 %, men jeg planlegger å fjerne støtten uansett med en vennlig tilbakemeldingsmelding.
