2017-03-20 16 views
17

Tôi nhận được ba thông báo cảnh báo khi nhập request trong dự án webpack barebone. Một ví dụ tối thiểu để tái tạo lỗi có sẵn trên GitHub (chạy npm installnpm start).Webpack - phụ thuộc quan trọng: yêu cầu của phụ thuộc là biểu thức

Critical dependency: the request of a dependency is an expression

Tôi làm cách nào để loại bỏ cảnh báo này?


Thông tin thêm:

Webpack cố gắng giải quyết require cuộc gọi tĩnh để thực hiện một bó tối thiểu. Khi một thư viện sử dụng các biến trong một cuộc gọi yêu cầu (chẳng hạn như these lines trong ajv), Webpack không thể giải quyết chúng tĩnh và nhập toàn bộ gói.

Lý do cơ bản của tôi là nhập động động này không được mong muốn trong sản xuất và mã được giữ nguyên nhất là cảnh báo. Điều đó có nghĩa là tôi muốn bất kỳ giải pháp nào giải quyết được vấn đề. Ví dụ:

  1. Định cấu hình webpack để nhập thư viện bắt buộc theo cách thủ công và ngăn cảnh báo xuất hiện.
  2. Thêm một tệp hack.js vào dự án của tôi ghi đè yêu cầu cuộc gọi theo một cách nào đó.
  3. Nâng cấp thư viện của tôi. ajv-5.0.1-beta.3 có bản sửa lỗi làm im lặng các cảnh báo. Tuy nhiên, nếu tôi muốn sử dụng nó, tôi phải chờ cho đến khi nó được phát hành, và sau đó cho đến khi har-validatorrequest phát hành các bản cập nhật tiếp theo. Nếu có một cách để buộc har-validator sử dụng phiên bản beta ajv, điều đó có thể giải quyết được sự cố của tôi.
  4. khác
+0

1. https://github.com/epoberezkin/ajv/issues/117#issuecomment-198328830 2. Tôi không nghĩ nó sẽ hoạt động 3. bạn sẽ phải chờ một chút. – esp

+0

@esp: nhận xét github có vẻ là những gì tôi đang tìm kiếm, nhưng nó không làm im lặng các cảnh báo. Nếu tôi thay đổi nó thành 'new webpack.IgnorePlugin (/ async /,/ajv /)', hai trong số ba cảnh báo đã biến mất nhưng webpack 'Không thể tìm thấy module" ../ async "'. Bất kỳ ý tưởng về giá trị phép thuật thích hợp để làm cho nó hoạt động? – Jodiug

Trả lời

16

giải quyết với npm install [email protected] --save

Theo các tác giả của ajv, vấn đề này có thể sẽ được giải quyết trong phiên bản mới nhất của request trong thời gian một vài tuần.

+7

Lỗi này là không thực tế gây phiền nhiễu. Vẫn chưa được giải quyết, phá vỡ một tấn thư viện trên mạng. – eveo

+0

Tôi không thể làm cho nó hoạt động với bất kỳ phiên bản – maembe

+0

@maembe thử 'npm xóa yêu cầu' và cài đặt lại, sau đó trong' package.json' xóa '^' trước số phiên bản. Nếu bạn rời khỏi '^', gói có thể được cập nhật sau khi cập nhật 'npm' và cảnh báo sẽ xuất hiện trở lại. – Jodiug

2

Thay thế này

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

với this-

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

Tính năng này hoạt động. Nó sẽ là tốt đẹp cho một lời giải thích sâu hơn là tại sao thay đổi biểu thức chính quy sửa chữa vấn đề này. – atconway

Các vấn đề liên quan