2017-10-13 320 views
0

我用的NodeJS-ReactJS同構應用程序的工作,並在Link當我點擊我得到一個錯誤說`的頁面被unloaded`錯誤

Uncaught (in promise) Error: Request has been terminated Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.

前兩個原因(離線和CORS)我聽說過。錯誤意味着什麼是the page is being unloaded?它如何導致瀏覽器無法瀏覽需要。

screenshot

+0

您的鏈接指向外部域名嗎?如果是這樣,那麼最好使用'a'標籤。 – Fawaz

+0

我在'Link'組件中使用'a'標籤。 –

+0

你爲什麼要那樣做!一次使用其中任何一個。 – Fawaz

回答

1

你的錯誤是

Uncaught (in promise) Error: Request has been terminated 

此錯誤時,在承諾的要求是解決或拒絕前終止造成的。有網絡故障,以及使用其正在處理的請求丟失的URL的連接:如果(Possible causes

  1. the network is offline就會發生這種情況。
  2. Origin is not allowed by Access-Control-Allow-Origin:由於缺少正確的CORS標頭,請求被拒絕。
  3. the page is being unloaded:發出請求的頁面在請求完成之前關閉。

上述原因,有關你的情況下,最有可能的原因是1或2,因爲你上單擊Link導航到組件的錯誤。請檢查使用Link加載的新組件所發出的請求。

編輯: 如果你看錯誤信息屏幕截圖,它清楚地表明,錯誤發生在行號。在node_modules/superagent/lib/client.js.Request.crossDomainError的PromiseRequest中,app.js的73194。所以你錯誤的原因是在上面的數字2中描述的CORS錯誤。

+0

謝謝。我的問題是第三個錯誤/原因是什麼? '正在卸載頁面'錯誤的含義是什麼? *請求在請求完成前關閉。*並不意味着頁面被卸載*。我對嗎? –

+1

如果在請求完成之前發出請求的頁面已關閉,則會出現此錯誤。當頁面關閉時,它會觸發'beforeunload'和'unload'事件,讓服務知道請求可以終止。 – palsrealm

+0

Oh..Thannks。但就我而言,我嘗試導航的第二次正在工作。 CORS還可以。我現在在我的項目中看不到這個錯誤。 –

0

'原因Link組件正在使用Location.push來做重定向,而Location.push方法不能重定向到另一個域。

所以我的解決方案是:

  1. 使用window.open('http://your.new.domain.com/index', '_self')
  2. 使用<a href="http://your.new.domain.com/index">
0

看來你沒有啓用您的節點服務器的CORS。 建議的步驟:

  • NPM安裝CORS

  • 使用它在app.js(節點服務器)

var cors = require('cors');  
var app = express(); 
app.use(cors()); //Enable CORS