source

Angular 9는 로드해야 하는 글로벌 '$localize()' 함수를 도입했습니다.

lovecheck 2023. 8. 25. 23:44
반응형

Angular 9는 로드해야 하는 글로벌 '$localize()' 함수를 도입했습니다.

새로운 각도 프로젝트 설정에서 다음과 같은 오류가 발생합니다.

설치된 패키지 및 해당 버전

잡히지 않음(약속):例오:사용하고 있는 .당신의 애플리케이션 또는 그 종속성 중 하나가 i18n을 사용하고 있는 것 같습니다. Angular 9를 .$localize()로드해야 하는 함수입니다.추주세요를 추가해 .import '@angular/localize';polyfiles.ts 파일로 이동합니다.例오:사용하고 있는 .당신의 애플리케이션 또는 그 종속성 중 하나가 i18n을 사용하고 있는 것 같습니다. Angular 9를 .$localize()로드해야 하는 함수입니다.

참고: 저는 다음에서 왔습니다.이전 버전으로 돌아갈 것을 제안합니다.https://github.com/angular/angular/issues/32508

먼저 @angular/localize 패키지가 있는지 확인해야 합니다.

npm install @angular/localize --save

그리고나서,import '@angular/localize/init'오류에 표시된 것처럼 polyfiles.ts 파일에 있습니다.

Angular CLI를 사용하는 경우 가장 좋은 방법은

ng add @angular/localize

자동으로 처리됩니다.

아니면

import '@angular/localize/init';의 신에게에.polyfills.ts

대로 Angular 9

동일한 작업 공간에 여러 개의 각도 프로젝트가 있는 경우 실행ng add @angular/localize 문을 합니다.import '@angular/localize/init'기본 프로젝트에서만 polyfiles.ts로, 이것은 이후 업데이트에서 수정될 것이라고 생각합니다.

그래서 당신은 추가해야 합니다.import '@angular/localize/init'수동으로 다른 프로젝트의 polyfiles.ts에 연결합니다.

이 오류는 여러 하위 앱이 있는 대형 Nx/Angular CLI 애플리케이션을 Angular 10으로 업그레이드한 후에 발생하기 시작했습니다. ( run 오에실제솔션루시십오하된안행류실)(▁run▁the▁suggested오▁(시▁solutionng add @angular/localize응용 프로그램에 여러 개의 응용 프로그램이 포함된 경우에는 Angular CLI에서)가 작동하지 않습니다.이러한 자동 생성 앱은 각각 고유한 기능을 가지고 있습니다.polyfill.ts했습니다(가져기를수추니다습했가로으동오(다니▁i▁the).import '@angular/localize/init';)이가) 각 파일에 됩니다.이(가) 각 polyfill.ts 파일에 포함됩니다.유닛 테스트를 실행하는 동안 동일한 오류를 수정하기 위해 libs의 test.ts 파일에 import를 추가해야 했습니다.

를 실행 중인 ng test. 하고 그고위답작않지습다니동하리변을 추가하십시오. 패키지를 설치하고 추가하십시오.

import "@angular/localize/init"

polyfills-test.ts

Angular 9는 i18n을 사용할 경우 로드해야 하는 글로벌 $localize() 함수를 도입했습니다.

려달을 합니다.ng add @angular/localize연결할 수 있습니다.

그런 다음 다음을 확인합니다.
-@angular/localize앱 패키지의 종속성으로 사용할 수 있습니다.제이손
-import '@angular/localize/init'의 polyfills.ts 폴신안에즈필리에.

이 패키지를 추가해야 합니다.

ng add @angular/localize

그 다음에 추가import '@angular/localize/init';의 신에게에.ployfills.ts

그러나 라이브러리에서 실패한 테스트를 추가해야 합니다.import '@angular/localize/init';의 신에게에.test.ts

Angular 버전을 12에서 13으로 업데이트하는 동안 이 오류가 발생했습니다.저는 지침을 따랐습니다.

  1. @angular/localize 추가 실행
  2. polyfiles.ts에서 '@prefiles/localize/init'을(를) 가져옵니다.

하지만 제게는 효과가 없었습니다.Angular 12 앱이 모두 정상적으로 작동한 후 모듈과 polyfiles.ts 파일에 이미 @angular/localize가 있습니다.

문제를 해결하기 위해 "@ng-bootstrap/ng-bootstrap" 버전을 업데이트해야 했습니다.오래된 @ng-bootstrap/ng-bootstrap 버전과 오류 설명 사이에 명백한 연관성이 없었기 때문에 이 제안이 누군가에게 두통을 덜어줄 수 있기를 바랍니다.

달려.

npm install @angular/localize --save

러면에서 당의신.polyfills.ts

import '@angular/localize/init' 

이것은 나에게 효과가 있습니다.

이렇게 하는 가장 좋은 방법은 Angular CLI를 사용하는 것입니다.

터미널에서 다음 명령을 실행하기만 하면 됩니다.

ng add @angular/localize

그러면 패키지가 자동으로 설치되고 polyfiles.ts 파일에 가져오기 문이 추가됩니다.

가져오기 문은 다음과 같습니다.

import '@angular/localize/init';

CLI 접근 방식을 사용하지 않으려면 polyfiles.ts 파일에 import 문을 수동으로 입력할 수 있습니다.또한 당신은 아래 라인을 패키지에 추가해야 합니다.json 종속성 태그입니다.

"dependencies":{
    ...
    "@angular/localize":"^9.1.0",
    ...    
}

에게 이 는 실행중이오발생다니습했을 할 때 했습니다.npm test그래서 위의 해결책들은 도움이 되지 않았습니다.그것을 해결하기 위해 나는 현지화를 수입해야 했습니다.jest.ts해 주세요. 다음을 추가합니다.

import "@angular/localize/init";

이제 i18n 속성이 생성된 코드에서 $localize 호출로 변환되므로 $localize 함수를 로드해야 합니다.

CLI는 이 작업을 수행하기 위한 도식을 제공합니다.단순 실행: ng add @angular/localize

패키지를 종속성에 추가하고 필요한 가져오기를 폴리필('@angular/localize/init' 가져오기)에 추가합니다.

자세한 내용은 다음 링크를 참조하십시오.https://blog.ninja-squad.com/2019/12/10/angular-localize/

저는 이 문제 때문에 운영체제를 바꿨습니다.그리고 어제 저는 이 문제의 원인을 찾았습니다.Visual Studio Code에 설치한 플러그인 때문에 이 문제가 발생했습니다.Angular9를 사용하는 경우 처음 두 개의 플러그인을 설치하지 마십시오.세 번째 것을 설치할 수 있습니다.

enter image description here

폴리필로 대체:

import '../node_modules/@angular/localize/init';

이것으로:

import '@angular/localize/init';

그리고 모든 것이 괜찮아요!

이 오류 메시지는 다른 i18n 라이브러리로 전환할 때 기본 @angular/localize 패키지를 사용한 경우 i18n의 모든 항목을 제거하는 등 프로젝트를 제대로 정리하지 않은 경우에도 나타날 수 있습니다.

나는.import '@angular/localize/init';에서polyfill.ts파일은 있지만 오류는 다른 곳에 있었습니다!누군가에게 도움이 될까봐 그냥 여기에 떨어뜨려요!

나는 있습니다.browserlistrc내 프로젝트의 파일과 규칙 세트가 방금 Angular i18n을 깼습니다.제 경우, 저는 그것을 제거해야 했습니다.>0.3%작동하기 위해 목록에서!

좋은 하루 보내세요!

그래서 저의 경우 Angular v15에 @ng-bootstrap/ng-bootstrap을 사용하려고 합니다.

오랜 조사 끝에 Angular v14로 새로운 프로젝트를 만들었습니다.

npx -p @angular/cli@14.2.0 new hello-world

및 설치

@ng-bootstrap/ng-bootstrap

그리고 난 일했어요!

그래서 root /src 폴더에 polyfiles.ts를 만들었습니다.

그런 다음 angular.json을 업데이트합니다.

projects/architect/build/polyfills: ["zone.js", "src/polyfills.ts"],

그리고.

projects/architect/test/polyfills: ["zone.js", "zone.js/testing", "src/polyfills.ts"],

tsconfig.app.json:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": [
      "node"
    ]
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts" <- add this
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}

동일한 intsconfig.spec.json:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jasmine",
      "@angular/localize"
    ]
  },
  "files": [
    "src/polyfills.ts" <- add this
  ],
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}

언급URL : https://stackoverflow.com/questions/57953317/angular-9-introduced-a-global-localize-function-that-needs-to-be-loaded

반응형