Rollup-plugin-typescript2: Ошибка Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ связывания с "target": "esnext" Π² tsconfig

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 15 нояб. 2019  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: ezolenko/rollup-plugin-typescript2

Π§Ρ‚ΠΎ происходит ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π½Π΅ Ρ‚Π°ΠΊ

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

Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈΠ· README:

yarn rollup -c

РаскоммСнтируйтС строку "target": "esnext" Π² tsconfig.json Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

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)

ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, это ошибка rollup-plugin-typescript2 ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ с "target": "esnext"
Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², yarn tsc --noEmit ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Typescript ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ Π΅Π³ΠΎ).

Π‘Ρ€Π΅Π΄Π°

НС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ

ВСрсии

  • ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст: послСдний
  • Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚: послСдний
  • rollup-plugin-typescript2: послСдний

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",
  }
}

package.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"
    }
}

Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠ»Π°Π³ΠΈΠ½Π° с Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ 3

plugin-debug.txt

ВсС 7 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Машинопись ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ a?.b Π² (_a = a) === null || _a === void 0 ? void 0 : _a.b ΠΏΡ€ΠΈ использовании es2015 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).

Он ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ a?.b Π² a?.b ΠΏΡ€ΠΈ использовании esnext . Π― Π΄ΡƒΠΌΠ°ΡŽ, это встроСнная функция JS Π² esnext,

Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ: Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ это ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. (Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ ΠΎΠ½ΠΈ это ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚).

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, запустив tsc , заставив Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ index.js, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„Π°ΠΉΠ» js Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… для объСдинСния. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ. ПослС раскоммСнтирования "target": "esnext" ΠΈ запуска yarn tsc index.ts , index.js содСрТит:

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

( yarn rollup -c ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚)

Π₯ΠΌ, со ΠΌΠ½ΠΎΠΉ Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ

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

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваша вСрсия машинописного тСкста такая, ΠΊΠ°ΠΊ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, yarn запускаСт Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ?):

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

Π£ мСня такая ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Ρ†Π΅Π»ΡŒΡŽ "esnext" ΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ. Π•ΡΡ‚ΡŒ Π»ΠΈ исправлСниС? ВсС компилируСтся с tsc

@ dagda1, это Π½Π΅ ошибка - это ΠΌΠ°ΡˆΠΈΠ½ΠΎΠΏΠΈΡΠ½Ρ‹ΠΉ тСкст, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ (для Ρ†Π΅Π»ΠΈ esnext), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ babel Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ, Ссли Ρƒ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ esnext.

@ezolenko, ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ babel для объСдинСния ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ связывания?

Насколько я знаю, Π΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ (Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ исправлСно, это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° сторонС накоплСния ΠΈΠ»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΅Π³ΠΎ зависимостСй).

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ