Cách khắc phục 'fs: đánh giá lại các nguồn mô-đun gốc không được hỗ trợ' - Graceful-fs


162

Gần đây tôi đã thực hiện chuyển đổi sang Node v.6 và nó bắt đầu tạo ra nhiều vấn đề hơn với việc chạy các bản dựng bình thường grunt / gulp / webpack

Ví dụ:

$ gulp
[14:02:20] Local gulp not found in ~/_Other/angular-2-ts/angular2-seed
[14:02:20] Try running: npm install gulp

trong khi gulp và tất cả các plugin và mô-đun khác được cài đặt (và thậm chí được cài đặt lại qua rm -rf node_modules) trong thư mục / node_modules.

Hầu hết các lỗi đó có dòng như

(node:42) fs: re-evaluating native module sources is not supported. 
If you are using the graceful-fs module, 
please update it to a more recent version.

với 42 là số tùy ý

Giống như trong vấn đề đó tôi đã gửi - trong repo angular2-seed https://github.com/mgechev/angular2-seed/issues/902

Những gì tôi đã cố gắng làm là hạ cấp xuống Node v.5 thông qua n ( https://www.npmjs.com/package/n ) - nó đã hoạt động. Sau đó xóa tất cả các node_modulesthư mục, sau đó làm

npm info graceful-fs -v
3.3.6

ok, cho phép nâng cấp hoặc gỡ bỏ và cài đặt mới:

npm i graceful-fs@latest
npm i graceful-fs@4.1.4
sudo npm i graceful-fs@4.1.4 -g

tất cả kết quả trong

npm info graceful-fs -v
3.3.6

Vì vậy, bây giờ tôi đang bị mắc kẹt với Graceful-fs 3.3.6 hoặc thậm chí tệ hơn trong một số phụ thuộc mô-đun, như

$ angular2-seed
$ npm install

//other lines..
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before 
will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 
as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.

Điều gì có thể là chiến lược ở đây:

  • Tự vá tất cả các deps chứa Graceful-fs <4.0.0?
  • Có một số chuyển đổi toàn cầu để sử dụng phiên bản gói cụ thể?
  • Cài đặt lại mọi thứ?

Tôi gặp vấn đề tương tự với Gulp và một số mô-đun của tôi. Tôi đã sửa các mô-đun của mình bằng cách nâng cấp các mô-đun để sử dụng các Grace-f mới nhất, nhưng tôi không chắc có giải pháp nào để sửa các mô-đun khác chưa được nâng cấp.
Jeremy Chone

Có vẻ như điều này sẽ không được sửa trong Gulp 3.x và bạn sẽ phải nâng cấp lên Gulp 4.x github.com/gulpjs/gulp/issues/1571
dtothefp

Câu trả lời:


170

Tôi đã có vấn đề này và tôi đã có thể khắc phục bằng cách cập nhật npm

sudo npm update -g npm

Trước khi cập nhật, kết quả npm info graceful-fs | grep 'version:'là:

version: '3.3.12'

Sau khi cập nhật kết quả là:

version: '3.9.3'

Cảm ơn @Jorge. Điều này đã giúp khắc phục vấn đề. Tôi vẫn nhận được appname@0.1.x / path / of / app với Graceful-fs@4.1.4 được tô sáng mỗi khi tôi chạy cài đặt npm trong thư mục ứng dụng của mình. nhưng tôi đang sống với điều đó bây giờ
Geo

Xin chào @Geo, tương tự ở đây, hãy xem câu trả lời của analog-nico, chúng tôi có các phiên bản khác nhau của cùng một gói vì các công cụ khác phụ thuộc hoàn toàn vào các phiên bản đó. Để thoát khỏi cảnh báo, chúng ta cần nâng cấp tất cả chúng hoặc tìm kiếm sự thay thế.
Asimov

5
Điều này không làm việc cho tôi, tôi phải chạynvm use v6.2.1
Nicwenda

46
Xin lưu ý rằng npm info graceful-fs -vtrả về phiên bản của npm (nó giống như đang chạy npm -v) và KHÔNG duyên dáng-fs. Để có được phiên bản f duyên dáng, hãy sử dụng cái gì đó như npm info graceful-fs | grep version:.
nstCactus

6
@Asimov Điều này cũng làm việc cho tôi. Ngoài ra, nếu bạn đã cài đặt lại NodeJS gần đây (tôi đã cài đặt Node thông qua gói trên trang web của họ và sau đó thay thế nó bằng gói từ homebrew) chạy rm -rf node_modules && npm installtrong thư mục nhà của dự án.
Dylanthepiguy

73

Nhập npm list graceful-fsvà bạn sẽ thấy phiên bản nào của Graceful-fs hiện đang được cài đặt.

Trong trường hợp của tôi, tôi đã nhận được:

npm list graceful-fs

@request/promise-core@0.0.1 /projects/request/promise-core
+-- gulp@3.9.1
| `-- vinyl-fs@0.3.14
|   +-- glob-watcher@0.0.6
|   | `-- gaze@0.5.2
|   |   `-- globule@0.1.0
|   |     `-- glob@3.1.21
|   |       `-- graceful-fs@1.2.3        <==== !!!
|   `-- graceful-fs@3.0.8 
`-- publish-please@2.1.3
  +-- nsp@2.4.0
  | `-- nodesecurity-npm-utils@4.0.1
  |   `-- silent-npm-registry-client@2.0.0
  |     `-- npm-registry-client@7.1.0
  |       `-- graceful-fs@4.1.3 
  `-- read-pkg@1.1.0
    `-- load-json-file@1.1.0
      `-- graceful-fs@4.1.4

Như bạn có thể thấy gulpsâu xuống phụ thuộc vào một phiên bản rất cũ. Thật không may, tôi không thể tự cập nhật mà sử dụng npm update graceful-fs. gulpsẽ cần phải cập nhật sự phụ thuộc của họ. Vì vậy, nếu bạn có một trường hợp như thế này, bạn đã hết may mắn. Nhưng bạn có thể mở một vấn đề cho dự án với sự phụ thuộc cũ - tức là gulp.


13
FYI, trong ví dụ cụ thể của bạn, gulpsẽ không thay đổi nó trong phiên bản 3 mà chỉ trong phiên bản 4: github.com/gulpjs/gulp/issues/1571
JBE

2
đây là nó cho tôi, cú hích cuối cùng để loại bỏ cơn thịnh nộ
Darko Z

Trong trường hợp của tôi, sự graceful-fsphụ thuộc mô-đun trước v4 đã đến từ npmchính nó (phiên bản 3.10.3) thông qua cmd-shim@2.0.2. Tôi đã không thấy điều này cho đến khi tôi liệt kê các phụ thuộc toàn cầu graceful-fs bằng cách sử dụng npm list -g graceful-fs.
Rusty Shackleford

Điều này đã giúp tôi giải quyết nó. Gói duyên dáng của tôi đã được cập nhật, nhưng một vài gói khác vẫn dựa vào phiên bản cũ hơn.
skerit

21

Đã giải quyết lỗi này với cài đặt lại gulp

npm uninstall gulp
npm install gulp

Âm thanh như gulp đã khắc phục vấn đề này - không thể nhớ nếu tôi đã cài đặt gulp với --save-dev hay không nhưng cách của bạn đã làm việc từ thư mục dự án của tôi.
hạ cánh

Đã sửa vấn đề cho tôi
Shady Keshk

Vâng, có vẻ như một vấn đề phụ thuộc Gulp cũ.
huyết thanh

1

Xóa nội dung thư mục node_modules và chạy

npm install bower
npm install

Giải quyết vấn đề cho tôi!


1

Như được mô tả ở đây , bạn cũng có thể thử lệnh

npm cache clean

Điều đó đã sửa nó cho tôi, sau khi các bước khác không mang lại kết quả đầy đủ (ngoài việc cập nhật mọi thứ).


1

Chỉ cần chỉ ra rằng cordova mang đến npm của riêng nó với sự phụ thuộc duyên dáng-fs, vì vậy nếu bạn sử dụng Cordova, hãy chắc chắn rằng đó là phiên bản mới nhất để bạn cũng nhận được fs duyên dáng mới nhất từ ​​đó.


1

Tôi đã có thể sửa nó bằng cách:

  1. cập nhật bởi package.json
  2. xóa thư mục node_modules
  3. thi hành npm install

0

nếu bạn đang chạy nvm, bạn có thể muốn chạy nvm use <desired-node-version>Điều này giữ cho nút phù hợp với npm


0

Hoặc cố gắng cập nhật node:

brew upgrade node

Nếu nó được cài đặt với brew(như trong trường hợp của tôi). sudo npm update -g npmđã không giải quyết vấn đề "tương tự" cho tôi.


0

Báo cáo cho biết: một tệp bị thiếu trong ... nhà cung cấp / win32-x64-48 / bind.node

Tôi đã tìm tập tin bind.node và tôi tìm thấy nó trong ...

https://github.com/sass/node-sass-binaries

Sao chép đúng tệp với tên bind.node và nó hoạt động.


0

Trong trường hợp dự án Cordova của tôi, việc gỡ cài đặt và cài đặt cordova -g đã khắc phục sự cố cho tôi.

npm uninstall -g cordova
npm install -g cordova
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.