Webpack-중요 종속성 : 종속성 요청은 표현식입니다.


86

request베어 본 웹팩 프로젝트에서 가져올 때 세 가지 경고 메시지가 표시됩니다 . 버그를 재현하는 최소한의 예는 GitHub (run npm installnpm start) 에서 사용할 수 있습니다 .

Critical dependency: the request of a dependency is an expression

이 경고를 어떻게 없앨 수 있습니까?


추가 정보:

Webpack require은 최소한의 번들을 만들기 위해 호출을 정적으로 해결하려고합니다 . 라이브러리가 (예 : 호출이 필요한 A의 변수 나 표현식을 사용하는 경우 require('' + 'nodent')이 라인 의를 ajv) 웹팩은 수입을 정적으로 전체 패키지를 확인할 수 없습니다.

내 근거는 이러한 동적 가져 오기가 프로덕션에서 바람직하지 않으며 코드가 경고없이 유지되는 것이 가장 좋다는 것입니다. 즉, 문제를 해결하는 솔루션을 원합니다. 예 :

  1. 필요한 라이브러리를 가져오고 경고가 발생하지 않도록 웹팩을 수동으로 구성하십시오.
  2. hack.js어떤 식 으로든 require 호출을 재정의 하는 파일을 내 프로젝트에 추가합니다 .
  3. 내 라이브러리를 업그레이드합니다. ajv-5.0.1-beta.3경고를 침묵시키는 수정이 있습니다. 나는 그것을 사용하려는 경우에는, 나는 그것이 때까지 발표하고, 될 때까지 기다려야 har-validator하고 request이후의 업데이트를 릴리스합니다. har-validator베타 버전 을 강제 로 사용 하는 방법이 있다면 ajv내 문제가 해결 될 것입니다.
  4. 다른

1. github.com/epoberezkin/ajv/issues/117#issuecomment-198328830 2. 작동하지 않을 것 같습니다 . 3. 조금 기다려야합니다.
esp

@esp : 그 github 주석이 내가 찾고있는 것 같지만 경고를 침묵 시키지는 않습니다. 내가 그것을 변경하면 new webpack.IgnorePlugin(/async/, /ajv/), 3 개의 경고 중 2 개는 사라지지만 webpack은 사라집니다 Cannot find module "../async". 그것을 작동시키기위한 적절한 마법의 가치에 대한 아이디어가 있습니까?
Jodiug

github 코드 예제에 대한 링크가 끊어졌습니다. Pls는 질문에 직접 코드를 넣습니다.
CodeChimpy

답변:


25

해결 npm install request@2.79.0 --save

의 저자에 따르면 ajv이 문제는 request몇 주 안에의 최신 버전에서 해결 될 것으로 예상 됩니다.


@maembe를 시도 npm remove request하고 다시 설치 한 다음 버전 번호 를 package.json제거하십시오 ^. 에서 나가면 ^패키지가가 업데이트 npm update되고 경고가 다시 나타납니다.
Jodiug

나를 위해 일하지 않았다. 그러나 아래의 다른 답변에서 @DhirendraNk의 제안은 webpack.ContextReplacementPlugin을 대체하는 것입니다.

10

이것을 교체

new webpack.ContextReplacementPlugin(
        /angular(\\|\/)core(\\|\/)@angular/,
        helpers.root('./src'), // location of your src
        {} // a map of your routes
    ),

이것으로

new webpack.ContextReplacementPlugin( /(.+)?angular(\\|\/)core(.+)?/, root('./src'), {} )

8
작동합니다. 정규식 변경으로이 문제가 해결되는 이유에 대한보다 자세한 설명이 있으면 좋을 것입니다.
atconway

이것은 나를 위해 작동합니다. 경고를 보는 것이 귀찮습니다. 감사합니다.

2
이 코드를 어디에서 찾을 수 있는지 아는 사람이 있습니까? 대체 할 코드를 찾을 수 없습니다.
Prem popatia

2
이것은 폴더 System.Import에서 소스 코드를 찾을 위치를 함수 에 알려주기 때문에 작동 node_modules합니다. 사용중인 Angular 버전에 따라 경로가 변경됩니다. Angular 팀에서 더 잘 처리해야합니다.
Robert Brisita

1

이 경고는 (dependancies 또는 devDependencies)의 패키지 삽입에 연결될 수 있습니다.

문제가 갑자기 나타나면 package.json의 마지막 수정 사항을 확인하십시오.

.NET Framework를 다시 시작하려는 경우 package-lock.json 제거를 고려하십시오 npm install.

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