Rollup-plugin-typescript2: Optionale Verkettung schlägt mit "target" fehl: "esnext" in tsconfig

Erstellt am 15. Nov. 2019  ·  7Kommentare  ·  Quelle: ezolenko/rollup-plugin-typescript2

Was passiert und warum es falsch ist

https://github.com/brandon-leapyear/rollup-optional-chaining-repro

Aus README kopiert:

yarn rollup -c

Entkommentieren Sie die Zeile "target": "esnext" in tsconfig.json , um den Fehler anzuzeigen:

index.ts: (3:57)
[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
index.ts (3:57)
1: import React from 'react'
2: 
3: const a: { b?: string } = {}
                               ^
4: 
5: export default () => <span>{a?.b}</span>
Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
    at error (/Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:5351:30)
    at Module.error (/Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:9643:9)
    at tryParse (/Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:9552:16)
    at Module.setSource (/Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:9868:33)
    at /Users/bchinn/Desktop/rollup-example/node_modules/rollup/dist/rollup.js:12148:20
    at async Promise.all (index 0)
    at async Promise.all (index 0)
    at async Promise.all (index 0)

Scheint ein rollup-plugin-typescript2 Fehler zu sein, denn mit "target": "esnext"
unkommentiert, yarn tsc --noEmit funktioniert immer noch (zB Typescript parst es gut).

Umfeld

Sollte nicht relevant sein

Versionen

  • Typoskript: neueste
  • Rollup: neueste
  • rollup-plugin-typescript2: neueste

rollup.config.js

import typescript from 'rollup-plugin-typescript2'

export default {
  input: 'index.ts',
  output: [
    {
      file: 'dist/index.js',
      format: 'es',
    },
  ],
  plugins: [
    typescript({
      typescript: require('typescript'),
    })
  ],
}

tsconfig.json

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "jsx": "react",

    // Uncomment to break:
    // "target": "esnext",
  }
}

Paket.json

{
    "name": "rollup-optional-chaining-repro",
    "version": "0.0.1",
    "private": true,
    "devDependencies": {
        "rollup": "^1.27.0",
        "rollup-plugin-typescript2": "^0.25.2"
    },
    "dependencies": {
        "typescript": "^3.7.2"
    }
}

Plugin-Ausgabe mit Ausführlichkeit 3

plugin-debug.txt

Alle 7 Kommentare

Typescript transpiliert a?.b zu (_a = a) === null || _a === void 0 ? void 0 : _a.b wenn es2015 (Standard) verwendet wird.

Es transpiliert a?.b zu a?.b wenn esnext verwendet wird. Ich denke, dies ist eine native JS-Funktion in esnext,

Der angezeigte Fehler besteht darin, dass das Rollup dies nicht analysieren kann. (nicht sicher, ob sie es unterstützen sollen oder nicht).

Sie können dies überprüfen, indem Sie tsc ausführen, index.js ausgeben und dann die js-Datei als Rollup-Eingabe verwenden. Sie sollten den gleichen Fehler erhalten.

Ich glaube nicht, dass das der Fall ist. Nachdem "target": "esnext" auskommentiert und yarn tsc index.ts , enthält index.js :

var _a;
var a = {};
console.log((_a = a) === null || _a === void 0 ? void 0 : _a.b);

( yarn rollup -c schlägt immer noch fehl)

Hm, passiert bei mir nicht, ich verstehe

const a = {};
console.log(a?.b);

Überprüfen Sie, ob Ihre Typoskriptversion Ihrer Meinung nach entspricht (vielleicht bringt Garn eine globale Version auf den Markt?):

.\node_modules\.bin\tsc --version
Version 3.7.2

Ich habe das gleiche Problem mit dem Ziel "esnext" und der optionalen Verkettung. Gibt es schon eine Lösung? Alles kompiliert mit tsc

@dagda1 Dies ist kein Fehler - dies ist

@ezolenko ist dies immer noch der Fall, dass die zusätzlichen Babel-Plugins für das Rollup und die optionale Verkettung erforderlich sind?

Soweit ich weiß, können Sie es mit der neuesten Rollup-Version versuchen und sehen, ob es funktioniert (wenn etwas behoben ist, wäre es auf der Rollup-Seite oder in einer seiner Abhängigkeiten).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen