2017-04-03 88 views
0

我嘗試在localhost:8080上重新運行我的項目時出現問題。所以,當我試着開始我的項目在本地主機上它給我這個錯誤:節點棄用警告:不使用回調調用異步函數已棄用

Deprecation Error

這不是我的項目出了問題,這個確切的項目在上週的工作,而現在沒有我的項目中可以正常運行。爲了確保它不是我的項目,我進入了文件瀏覽器並使用chrome打開了index.html文件,它只運行了index.html,我的腳本都沒有被引入。我不知道該如何解決這個問題。如果任何人都可以提供幫助,那會很棒。

+1

我想看看代碼,如果沒有一個回調調用異步功能 - 如果你進行任何更改,並避風港沒有更新nodejs,那麼與上週相比,您的行爲不應該有任何變化 –

+1

這不是一個錯誤,而是一個警告。爲了解決這個問題,不要使用代碼(你自己的,或者在庫中),它使用不帶回調的異步函數。 – Flimzy

+0

由於@Flimzy指出這是一個棄用警告。最有可能您的節點版本已更新,現在它讓您知道此類用法以前可以,但現在不鼓勵。最近,我在寫一個寫入文件的快速腳本時遇到了它。由於我不需要任何回調函數,所以我不得不使用writeFileSync,以免發生錯誤。只需在代碼中查找類似的用法並根據需要進行調整。 – Christopher

回答

0

我安裝了節點v7.8.0,這導致了我的問題。我卸載了該版本並安裝瞭解決這個奇怪問題的v6.10.1節點。

+3

我建議您仍然留意警告,並在可能的地方更新您的代碼。該用法在最新版本中已被棄用,以獲得良好的理由。保留舊版本可以避免現在的警告,但與利用新版節點版本中性能,安全性和功能的持續改進相比,它不是一個很好的長期解決方案。 – Christopher

1

回到以前的版本同時工作,但從長遠來看不能解決問題,並且您不會從新的修復,更新和升級中獲益。這會導致調用時警告

一個例子是功能

fs.readFile(path[, options], callback) 

沒有回調,會出現警告。

爲了防止警告並實現回調會是這樣,例如:

const fs = require('fs'); 
fs.readFile('./good.txt', 'utf8', function read(err, data) { 
     if (err) { 
      throw err; 
     } 
     content = data; 
     // call the next step here 
     console.log(content); // content display 
    it 
    }); 

讀回調函數(),做了兩兩件事,

  1. 它獲得的數據爲基礎的內容在編碼上,在本例中指定爲utf8。
  2. 然後捕獲並拋出錯誤(錯誤),如果有的話。

注:編碼是必要的,如果你想要的文件是人類可讀