ESLint - “pencere” tanımlanmamış. Package.json içinde genel değişkenlere nasıl izin verilir


187

Genel pencere nesnesine bir özellik atarım, ancak eslint çalıştırdığınızda, bunu elde:

"pencere" tanımlanmamış

Bunu eslint belgelerinde görüyorum :

aşağıdaki pencere, test edilen kuralı tetiklememesi gereken kod için global bir değişken olarak tanımlar:

valid: [
  {
    code: "window.alert()",
    globals: [ "window" ]
  }
]

Ben eslint küresel bir değişken olarak "pencere" izin vermek için package.json dosyasına böyle bir şey eklemeyi denedim, ama yanlış bir şey yapıyor olmalı. Belgelerden ayrı bir dosyada böyle bir şey yapmam gerekebilir gibi görünüyor, ancak package.json dosyasında izin verilen bazı global değişkenleri tanımlamanın bir yolu var mı?


FYI, düğümü kullanıyorsanız ve ESLint'in tanımasını globalistiyorsanız "node": true, "env"yapılandırmanızın altında ayarlandığından emin olmanız gerekir .
Joshua Pinter

Yanıtlar:


309

İçerdiği bir yapı environment: browservar window.

Örnek .eslintrc.json:

"env": {
    "browser": true,
    "node": true,
    "jasmine": true
  },

Daha fazla bilgi: http://eslint.org/docs/user-guide/configuring.html#specifying-environments

Ayrıca bakınız chevin99 tarafından cevap aşağıda.package.json


Kesinlikle en iyi cevap, teşekkürler. Bunu bile düşünmedim :)
Knight Yoshi

4
Her ihtimale karşı başkası benim gibi dışarı yakalanır: Bu olmalıdır .eslintrcdeğilpackage.json
Clay A Jar

Bunu sadece bir dosya için geçerli kılmanın bir yolu var mı?
AnnanFay

Aşağıdaki Carles Alcolea cevabında aşağıdakileri buldum : Bu dosyanın üst kısmına ekleyin:/* eslint-env browser */
Laoujin

102

Bu sayfada buldum: http://eslint.org/docs/user-guide/configuring

Package.json içinde bu çalışır:

"eslintConfig": {
  "globals": {
    "window": true
  }
}

63
Bunu yapmanın doğru yolu "env" kullanmaktır: {"tarayıcı": doğru}
Nicolas

@Nicolas, evet, muhtemelen ilk bulduğum şeyse önerdiğiniz yöntemi kullanırdım, ancak bu cevap en azından eslint config paketinizi package.json'da bulabileceğinizi göstermede yararlıdır.
chevin99

4
Küreselleri şu şekilde ifade etmek için satır içi yapmak da mümkündür: / * global açısal: gerçek * /
Mirko

soru özellikle package.json dosyasının nasıl kullanılacağını soruyor
virtualLast

59

.eslintrcProje kök dizinine ekleyin .

{
  "globals": {
    "document": true,
    "foo": true,
    "window": true
  }
}

Bir şekilde eslingConfig dosyasını package.json dosyasına yerleştirmek benim için işe yaramadı (kavramsal olarak yanlış olmanın dışında). .Eslintrc.json içine eklemek olsa da çalışır.
Petrunov

1
@Petrunov .eslintrc.jsonsadece olabilir.eslintrc
Kirk Strobeck

Bu ben deneyimlediğim bir durumda çalışmıyor - krom uzatma projesi için gulp ile eslint kullanıyorum. küresellerde ben "chrome": true ayarlamak ve hala tanınmayan bir küresel olma konusunda bir hata atar.
Stephen Tetreault

42

Kişisel .eslintrc.json aşağıdaki metni içermelidir.
Bu şekilde ESLint global değişkenlerinizi bilir.

{
  "env": {
    "browser": true,
    "node": true
  }                                                                      
}

14

Satır içi sürümü istemediğinin farkındayım . Ama bu soru neredeyse 100 bin ziyaret ettiğinden ve buraya baktığımda, bir sonraki kodlayıcı için burada bırakacağım:

ESLint'in --no-inline-configbayrakla çalıştırılmadığından emin olun (eğer bu size tanıdık gelmiyorsa, gitmeniz iyi olur). Ardından, bunu kod dosyanıza yazın (açıklık ve kural için dosyanın üzerine yazılır, ancak her yerde çalışır):

/* eslint-env browser */

Bu, ESLint'e çalışma ortamınızın bir tarayıcı olduğunu söyler, bu yüzden şimdi bir tarayıcıda mevcut olan şeyleri bilir ve buna göre uyarlanır.

Çok sayıda ortam var ve aynı anda birden fazla ilan edebilirsiniz, örneğin, satır içi:

/* eslint-env browser, node */

Neredeyse her zaman belirli ortamları kullanıyorsanız, ESLint'in yapılandırma dosyasında ayarlamak ve unutmak en iyisidir .

Gönderen onların docs :

Bir ortam, önceden tanımlanmış global değişkenleri tanımlar. Mevcut ortamlar:

  • browser - tarayıcı genel değişkenleri.
  • node - Node.js genel değişkenleri ve Node.js kapsamı.
  • commonjs - CommonJS global değişkenleri ve CommonJS kapsam belirleme (bunu Browserify / WebPack kullanan sadece tarayıcı kodu için kullanın).
  • shared-node-browser - Hem Düğüm hem de Tarayıcı için ortak olan globaller.

[...]

Ortamların yanı sıra, istediğiniz her şeyi göz ardı edebilirsiniz. Sizi kullanma konusunda uyarıyorsa, console.log()ancak uyarılmak istemiyorsanız, sadece satır içi:

/* eslint-disable no-console */

En iyi kodlama uygulamaları için önerilen kurallar da dahil olmak üzere tüm kuralların listesini görebilirsiniz .


2

Angular kullanıyorsanız aşağıdakileri yapabilirsiniz:

"env": {
    "browser": true,
    "node": true
},
"rules" : {
    "angular/window-service": 0
 }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.