[javascript] TypeScript “저장시 컴파일”기능이 Visual Studio 2015에서 작동하지 않음

Visual Studio 2015로 업그레이드 한 후 “저장시 컴파일”기능이 작동하지 않습니다. .ts프로젝트에서 파일을 변경 하고 저장하면 IDE 하단의 상태 표시 줄에이라고 표시 Output(s) generated successfully되지만 생성 된 .js파일은 작동하지 않습니다. 변경하지 마십시오.

내가 시도한 것은 다음과 같습니다.

  • <Project>my 의 루트 요소에 다음을 추가합니다 .csproj.

    <PropertyGroup>
        <TypeScriptCompileOnSaveEnabled>True</TypeScriptCompileOnSaveEnabled>
    </PropertyGroup>
    
  • 에서 “프로젝트의 일부가 아닌 TypeScript 파일 자동 컴파일”옵션을 선택 및 선택 취소합니다 Tools -> Options -> TypeScript -> Project.

    여기에 이미지 설명 입력

  • 내 프로젝트의 TypeScript Build 속성에서 “Compile on save”가 선택되어 있는지 다시 확인합니다.

    여기에 이미지 설명 입력

내가 무엇을 놓치고 있습니까?

참고로 TypeScript 컴파일 단계는 일반 빌드에 의해 트리거 될 때 예상대로 작동합니다.



답변

나를 위해 이것은 다음과 같은 옵션이었습니다 tsconfig.json.

"compileOnSave": true,
"compilerOptions": { ... },

이 변경 사항을 적용하려면 Visual Studio를 다시 시작하십시오.


답변

오늘이 문제를 발견했습니다. "watch":true최신 TypeScript 버전에서도 JSON을 통해 사용할 수 있는 새로운 컴파일러 옵션 을 사용하여 수정했습니다 .

{
  "compilerOptions": {
    "watch": true
  }
}

그런 다음 출력 창에 나타나는 다음 오류와 관련된 또 다른 문제를 해결해야했습니다.

Object doesn't support property or method 'watchFile'

내 시스템은 Visual Studio 2015 업데이트 1 (1.7) 과 함께 제공되는 최신 버전이 있다고 확신했지만 이전 버전의 TypeScript (1.0.x)를 사용하고있는 것으로 나타났습니다 . 이 문제가 발생하면 다음을 입력하여 쉽게 tsc 버전을 확인할 수 있습니다.tsc -v 하면 명령 프롬프트에서 .

그것이 말하는 경우 1.0.x또는 아무것도 <1.7, 그것 때문에 당신이 당신의 PATH 환경 변수에서 오래된 참조를 가지고 있다는 사실에 아마. Visual Studio에서 업데이트 될 때 TypeScript 패키지를 설치하는 데 사용되는 Microsoft SDK 폴더 내부를 확인하여 1.7 이상이 설치되어 있는지 확인합니다.

C:\Program Files (x86)\Microsoft SDKs\TypeScript

그렇지 않은 경우 그에 따라 업데이트하십시오. 열기 의 cPanel > 시스템 > 고급 > 환경 변수 를 선택 시스템 변수 및 클릭 편집 ; 목록을 검색하여 TypeScript 폴더에 대한 참조를 찾고 그중 하나를 변경하여 TypeScript가 가장 최근에 설치된 버전 ( 1.7또는 그 이상)을 가리 키도록하고 다른 복제를 삭제하십시오. 아래 스크린 샷도 참조하십시오.

여기에 이미지 설명 입력

자세한 내용 은 내 블로그 에서이 게시물 을 참조하십시오 .


답변

해결책:

저에게는 이것이 다른 사람들에게도 마찬가지라고 확신합니다. 이것은 tsconfig.json의 실수로 인한 것입니다.

“compileOnSave”: true를 추가해야합니다. 그러나 compilerOptions 내부가 아닌 전역 섹션에서.

Wrong:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5",
    "compileOnSave": true

  },
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

Correct:
{
  "compilerOptions": {
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"

  },
"compileOnSave": true,
  "exclude": [
    "node_modules",
    "wwwroot"
  ]
}

친애하는,

Anders 둘 다 Basechat.


답변

이 문제는 TypeScript Language Services확장 프로그램 에 대한 최신 업데이트를 통해 해결 된 것으로 보입니다 .

이 업데이트를 적용하는 방법에 대한 지침 은이 답변참조하십시오 .


답변

제 경우에는 VS 2012와 함께 Visual Studio Community 2015를 설치했습니다. 저는 2012 년에 타이프 스크립트에 Web Essentials를 사용했는데 2015 년과 충돌하는 것처럼 보였습니다.

2012 년에 Web Essentials를 제거하면 문제가 해결되었습니다.


답변

typescript 2를 사용하면 tsconfig에서 “outDir”:을 삭제해야합니다. Visual Studio에서 나를 위해 버그를 수정하십시오.


답변

프로젝트 속성-> “TypeScript Build”에서 “오류가보고 된 경우 출력을 내 보내지 않음”을 선택 취소 할 수도 있습니다. 확인하면 오류가 있거나없는 저장시 트랜스 파일을 비활성화하는 것 같습니다.