TypeScript 컴파일시 실험 데코레이터 경고


248

경고가 나타납니다.

데코레이터에 대한 실험적 지원은 향후 릴리스에서 변경 될 수있는 기능입니다. 이 경고를 제거하려면 'experimentalDecorators'옵션을 설정하십시오.

... tsconfig.json의 compilerOptions에 다음 설정이 있지만

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

이상하게도 데코레이터를 사용하는 임의의 임의 클래스는 경고를 표시하지 않지만 동일한 프로젝트의 나머지 클래스에는 경고가 표시됩니다.

TypeScript 컴파일러에서 이러한 동작을 유발할 수있는 것은 무엇입니까?


19
VS 코드를 다시 시작 했습니까? 때로는 tsconfig.json을 변경 한 후에 필요하다는 것을 알았습니다.
David Sherret

2
당신은 타격 응답 친구를 시도 할 수 있습니다. 그것은 나를 위해 작동합니다! stackoverflow.com/a/38970591/2468781
eildiz

10
우연히 VS Code가 아닌 VS Professional을 사용하는 누군가가 이것 .ts에 부딪 치면 수동으로 각도 프로젝트에 파일을 추가했을 수 있습니다. 그렇다면 기본 TS 컴파일은 Angular CLI와 충돌합니다. 파일-> 특성-> 빌드 조치 : 없음을 마우스 오른쪽 단추로 클릭하십시오. 그런 다음 필요한 경우 VS를 다시 시작하십시오.
pbarranis

2
VS 코드를 다시 시작하면 문제를 해결하는 데 도움이되었습니다.
CMA

4
code .잘못된 디렉토리에서 VSCode ( ) 를 시작했습니다 . 모든 것이 정상인 것 같습니다. 모든 파일을보고 편집 할 수있었습니다. 그래서 처음에는 아무 것도 잘못되었다는 것을 알지 못했습니다. 그러나 나는 그 어리석은 "실험 장식 자"경고를 단 하나뿐입니다! -각도 성분. VSCode를 종료 code .하고 CORRECT 디렉토리 (내 Angular 프로젝트 루트) 에서 다시 시작했습니다 . 경고가 사라졌습니다.
paulsm4

답변:


219

VS Code는 TypeScript 프로젝트를위한 훌륭한 편집자이지만 매번 킥이 필요합니다. 종종 경고없이 특정 파일은 파일을 놀라게하고 불평하게합니다. 대부분의 수정은 열려있는 모든 파일을 저장하고 닫은 다음 여는 것 같습니다 tsconfig.json. 그런 다음 오류없이 문제가되는 파일을 다시 열 수 있어야합니다. 그래도 효과가 없으면 거품을 내고 헹구고 반복하십시오.

귀하의 경우 tsconfig.json지정의 소스 파일을 사용하여 files배열을 문제의 파일은 VS 코드가 입력 파일 트리를 탐색하여 찾을 수 있도록 참조되는 경우, 인텔리가 제대로 작동 만 것입니다.

편집 : '창 다시로드'명령 (이전에 연령 추가) 은이 문제를 한 번에 해결해야합니다.


5
감사합니다
-tsconfig.json

4
대답은 실제로 내 사건과 관련이 없었지만 어떻게 든 내 문제를 파악하는 데 도움이되었습니다. VS 2015를 사용하고 xprojtsconfig파일 변경 사이에 스크립트 파일이있는 폴더가 exclude섹션에 나열되어 있다는 사실을 놓쳤습니다 tsconfig. 이것이 누군가를 돕기를 바랍니다.
Stefan Balan

18
파일> 폴더 닫기> 폴더 열기가 나를 위해 일했습니다. 이것은 vscode를 올바르게 닫지 않고 컴퓨터를 다시 시작한 후에 발생했습니다.
Adrian Moisa

3
타이프 스크립트를 사용하지 않으면 어떻게됩니까? 자바 스크립트 es6 만?
DDD

3
언제 추가되었는지는 확실하지 않지만 명령 팔레트에는 이제 "다시로드 창"이 있으므로 이런 종류의 작업에 이상적입니다.
Coderer

184

경고를 제거하기 위해 vscode의 settings.json 파일에 다음을 추가했습니다.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode-> 환경 설정-> 설정

여기에 이미지 설명을 입력하십시오


고마워 es6 + decorators를 사용하고 있으며 typescript가 설치되어 있지 않습니다. 대박.
Akhmedzianov Danilian

3
VSCode 문제를 해결하기 위해 프로젝트에서 별도의 파일을 만들 필요가 없으므로이 답변이 가장 좋습니다.
로드리고

ctrl + ,사용자 설정을 여는 단축키. 사용자 설정에서 3 개의 점 ( ...)을 클릭 한 다음 팝업을 클릭 Open settings.json하여 엽니 다settings.json
suhailvs

고마워 매우 도움이됩니다.
an0nh4x0r

102

이 오류는 작업 공간 폴더로 "src"폴더를 선택할 때도 발생합니다.

"src", "node_modules"가있는 루트 폴더, 폴더를 선택하면 오류가 사라집니다.


9
이것을 게시하기 위해 여기에 왔습니다. 이것은 나를 위해 그것을 고쳤다. Angular CLI를 통해 Angular 2를 사용하고있었습니다.
async

위의 내용을 이해할 수없는 경우 : Vscode는 구성 파일이 알고있는 폴더를로드해야합니다. 당신은 내가 아래로 더 folde을로드하려면 추측 해당 폴더 아래에서 유효하는 새로운 설정 파일을 작성할 수 있습니다.
LosManos

그거였다. 감사합니다 :)
Kamil


32

프로젝트 내에서 tsconfig.json 파일을 작성한 후이 행을 추가하십시오.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}

25

내에 추가 typescript.tsdk해야합니다 .vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"

5
이것은 나를 위해 문제를 해결하지만, 그 라인에 들어가는 .vscode/settings.json
프랜 로드리게스에게

1
또한 나를 위해 그것을 해결했지만 .vscode폴더가 없었습니다 (왜 그런지 모르겠습니다-나는 백엔드 개발자이고 나를 내버려 두십시오!). 그래서 나는 루트 폴더에 하나의 settings.json파일을 생성했습니다.
Aage

17

VSCode에서 파일 => 환경 설정 => 설정 (또는 Control + 쉼표)으로 이동하면 사용자 설정 파일이 열립니다. "javascript.implicitProjectConfig.experimentalDecorators": true를 검색 한 다음 파일에서 ExperimentDecorators의 확인란을 선택하면 수정해야합니다. 그것은 나를 위해했다.

여기에 이미지 설명을 입력하십시오


12

Visual Code Studio에서 파일 >> 환경 설정 >> 설정으로 이동하여 검색 필드에서 "장식"을 검색하고 이미지와 같이 옵션을 확인하십시오. 여기에 이미지 설명을 입력하십시오


11

settings.json다음 위치에서 파일 열기<project_folder>/.vscode/settings.json

또는 아래에서 언급 한 바와 같이 메뉴에서 파일을 열 수 있습니다

VSCode -> File -> Preferences -> Workspace Settings

실험 데코레이터 설정

그런 다음 settings.json파일에 다음 줄을 추가 하십시오.

{
    "typescript.tsdk": "node_modules/typescript/lib",
    "enable_typescript_language_service": false
}

그게 다야. ' ExperimentDecorators ' 에 관한 경고 / 오류가 표시되지 않습니다


11
vscode 1.8.1을 사용하여 "enable_typescript_language_service"를 추가 한 후 "알 수없는 구성 설정"을 받았습니다
David Cheung

5
프로젝트에서 Typescript를 사용하는 경우 이는 해로운 조언입니다!
paulsm4

1
"enable_typescript_language_service"를 비활성화하면 라이브 린트 기능이 효과적으로 해제됩니다. TypeScript는이 제안을 피하십시오.
Jessy

10

이 답변은 Typescript가 아닌 Javascript 프로젝트를 사용하는 사람들을위한 것입니다 . tsconfig.json 파일 대신 jsconfig.json 파일을 사용할 수 있습니다 .

데코레이터 가 파일 안에 쓸 것을 경고 하는 특별한 경우 :

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}

버그가있는 동작을 해결하려면 항상 구성 파일에 "include"를 지정하고 편집기를 다시 시작하는 것이 좋습니다. 예 :

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}


9

tsconfig.json에 다음 줄을 추가하고 VS Code를 다시 시작하십시오.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}

다시 시작하는 것이 나를위한 열쇠였습니다. 감사.
rynop

9

요점을 다루지 말고 다음을 추가하십시오.

  • 사용자 설정이 아닌 작업 공간 설정

파일 >> 환경 설정 >> 설정에서

"javascript.implicitProjectConfig.experimentalDecorators": true

이것은 나를 위해 문제를 해결했고, 여기와 다른 곳에서 찾은 꽤 많은 제안을 시도했습니다.



4

명확성과 어리 석음을 위해.

1) .vscode / settings.json을 엽니 다.

2) "typescript.tsdk": "node_modules / typescript / lib"를 추가하십시오.

3) 저장하십시오.

4) Visual Studio Code를 다시 시작하십시오.


4

Visual Studio에서 작업중인 경우 이 수정을 시도해 볼 수 있습니다

  1. Visual Studio에서 프로젝트 언로드
  2. 프로젝트 홈 디렉토리로 이동하여 "csproj"파일을여십시오.
  3. 이미지에 표시된대로이 섹션에 TypeScriptExperimentalDecorators 추가

    여기에 이미지 설명을 입력하십시오

    1. Visual Studio에서 프로젝트를 다시로드하십시오.

위치 에서 자세한 내용을 참조하십시오 .


4

cli를 사용하여 * .ts 파일을 컴파일하는 경우 다음 명령을 사용하여 ExperimentDecorators를 설정할 수 있습니다.

 tsc filename.ts --experimentalDecorators "true"

고마워, 이건 내 좌절을 구했다. 질문자와 동일한 설정이 있었지만 Sublime Text 3 을 사용하고 있었고 귀하의 솔루션이 도움이되었습니다!
Irfandy Jip

4

src 만 열면 ts.config.json (프로젝트 폴더에 있음) 파일이 범위에 있지 않기 때문에 VS 코드에서 src 폴더뿐만 아니라 전체 프로젝트의 폴더를 선택했는지 확인하십시오. VS는 실험 데코레이터 매개 변수를 인식하지 못합니다.

제 경우에는이 문제와 관련된 모든 문제가 해결되었습니다.


이것은 또한 내 문제였습니다. node_modules가 보입니까? tsconfig.json이 보입니까? 그렇지 않은 경우 새 vsCode 창을 열고 이전 창을 닫고 파일-> 폴더 열기를 선택한 다음을 선택 하지 않고 src및 의 상위 폴더를 선택하십시오 . node_modulessrc
Kyle Vassella

3
  1. VScode를 엽니 다.
  2. Ctrl + 쉼표를 누릅니다.
  3. 스크린 샷 의 지시를 따르십시오
    1. 실험적인 데코레이터 검색
    2. 그것을 편집


1

tsconfig.json 파일에서 "baseUrl": ""를 제거하여 경고를 수정했습니다.


1

프로젝트 외부에있는 TS 파일을 열면이 문제가 발생할 수 있습니다. 예를 들어, lerna를 사용하고 있으며 다른 패키지에서 파일을 열었습니다. 다른 패키지에는 실험 데코레이터가있는 자체 tsconfig가 있었지만 VsCode는 그것을 존중하지 않습니다.


1

Angular 2에서 Injectable Services 를 생성하는 동안 동일한 문제에 직면했습니다 .tsconfig.json에 모든 것이 있습니다 .ColorsImmutable 라인 에서이 오류가 발생했습니다.

@Injectable()
export class ColorsImmutable {

그리고 공급자 배열을 사용하여 모듈 수준 또는 구성 요소 수준에서 서비스를 등록하는 것이 수정되었습니다.

providers:[ColorsImmutable ],

1

Deno JavaScript 및 TypeScript 런타임을 사용하고 tsconfig.json 또는 VSCode IDE 설정에서 ExperimentDecorators : true를 사용하는 경우 이거 작동 안 할거야. Deno 요구 사항에 따라 Deno 파일을 실행할 때 tsconfig를 플래그로 제공해야합니다. 사용자 정의 TypeScript 컴파일러 옵션 참조

내 특별한 경우에는 Deno 테스트를 실행하고 사용했습니다.

$ deno test -c tsconfig.json

파일이면 다음과 같은 것이 있습니다.

 $ deno run -c tsconfig.json mod.ts

내 tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}

나는 문서에서 실험 기능이 작동하지 않기 때문에 이미 이것을하고 있지만 아직 운이 없다.
Ezzabuzaid

작동합니다. 내 tsconfig.json의 내용에 대한 업데이트 된 답변을 참조하십시오. 그런 다음이 링크를 참조하십시오 github.com/manyuanrong/dso/issues/18
tksilicon

0

이 옵션을 tsconfig.json에 추가했습니다. "baseUrl": "front-end"프런트 엔드를 angular-cli 프로젝트의 이름으로 바꿉니다.


0

로 시도 할 수도 있습니다 ng build. 방금 앱을 다시 빌드했지만 이제는 준수하지 않습니다.


0

따라서 모듈 이름을 파일 이름과 일치 시켜이 문제를 해결할 수 있습니다. BankSpecialtyModule 모듈 이름이 있으면 파일 이름이어야합니다. bank-specialty.module.ts


0

새 모듈을 만들고 * .module.ts 및 * -routing.module.ts 파일을 다른 폴더로 옮길 때이 오류가 발생했습니다. 두 파일을 삭제하고 새 폴더에 모듈을 만든 후에는 완벽하게 작동합니다. 환경 Angular 버전 9 및 Angular CLI 버전 9.1.0

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.