javascript - Ayrıştırma hatası alınıyor: Beklenmeyen token, beklenen ";"


Büyük bir React + TypeScript projesi üzerinde çalışıyorum.

Diğer meslektaşlarımın yerel makinelerinde iyi çalışıyor, ama benimkinde aşağıdaki hatayı alıyorum:

Line 1:  Parsing error: Unexpected token, expected ";"

aşağıda görebileceğiniz gibi:

İşte kaynak kodu:

export type LoadOfferType = typeof import("../offers/defaultOffer");

export const loadOffer = async (): Promise<LoadOfferType> => {
  const offerName = process.env.NODE_ENV === "development" ? process.env.REACT_APP_FALLBACK_SITE : "defaultOffer";

  /**
   * We use a switch statement instead of ane xpression for the offer path
   * because Webpack throws a critical dependency error when using paths
   * that are not explicitly defined.
   */
  switch (offerName) {
    case "mysite.com":
      return await import("../offers/mysite.com");
    default:
      return await import("../offers/defaultOffer");
  }
};

Depoyu klonladıktan sonra çalıştırdığım komutlar şunlardı:

yarn install
yarn start

İşte sistemim hakkında bazı bilgiler:

node -v
v12.13.0

npm -v
6.12.0

yarn -v
1.19.1

Bunu düzeltmenin bir yolu hakkında bir fikrin var mı?

Teşekkürler!

Cevap #1

Birkaç şey olabiliyor. ts yapılandırması ve ayrıştırıcı yapılandırması ile ts.config.js dosyası oluşturdunuz mu, şuna benzer bir şey:

 export const typescriptConfig = {
 extends: ['plugin:@typescript-eslint/eslint- 
 recommended'],
 overrides: [
   {
     parser: '@typescript-eslint/parser',
     extends: [
       'plugin:@typescript-eslint/recommended',
       'prettier/@typescript-eslint',
       'plugin:import/typescript',
     ],
     plugins: ['@typescript-eslint'],

     files: ['*.ts', '*.tsx'],

     rules: {},
   },
 ],

}

Create React App varsayılan olarak ESLint kullanır. Ancak, ESLint varsayılan olarak TypeScript'i çözümleyemez. İsterseniz, @typescript-eslint/parser kullanmayı düşünebilirsiniz.

Bu, temel babel-eslint ayrıştırıcısının herhangi bir yapılandırma olmadan doğru çalışmıyor olabileceği anlamına geliyor. ESLint farklı dosyalara farklı ayrıştırıcılar uygulamıyor, bu yüzden babel-eslint bir hata fırlatıyor olabilir.

Yapılandırma dosyanızın projenin kök dizininde oluşturulduğundan emin olun. Ben bununla başlardım.

Cevap #2

Kesinlikle eski bir TypeScript sürümünü kullanıyorsunuz. Söz diziminiz tamamen geçerli.

Test edildi

Yerel olarak yapılan örnek test.