2016-11-15 35 views
4

林試着讓火力地堡FCM在我的陣營項目的工作(使用的WebPack)Firebase FCM React項目問題 - firebase-messaging-sw.js錯誤的類型?

當使用試圖爲gettoken():

messaging.requestPermission() 
    .then(function() { 
    console.log('Notification permission granted.'); 
    return messaging.getToken(); 
    }) 
    .then(function(token) { 
    console.log('token') 
    }) 
    .catch(function(err) { 
    console.log('Unable to get permission to notify.', err); 
    }); 

如下拋出異常:

browserErrorMessage: "Failed to register a ServiceWorker: The scrip 
has an unsupported MIME type ('text/html') 

我知道這個問題與缺少的服務工作者文件相關:firebase-messaging-sw.js,我將其添加到項目的根目錄,但仍然收到相同的錯誤。

林不知道什麼即時做錯了什麼,我已經設置了香草Java腳本項目,它工作正常....

有關此問題的任何想法?

回答

2

爲了接收消息,您需要創建一個名爲firebase-messaging-sw.js的文件。請參見Handle messages when your web app is in the foreground的火力地堡文檔中:

爲了獲得在onMessage事件,您的應用程序必須在firebase-messaging-sw.js定義火力地堡消息服務工作者。

+0

在反應中,調用'firebase''導入Firebase時未處理服務?它看起來像firebase-messaging-sw.js導入我已經導入的東西....你能詳細說明嗎? – Sean

1

這裏的問題是我的項目設置沒有'看到'服務工作者文件。

由於我在Express中使用節點,因此firebase-messaging-sw.js必須放置在快速拾取靜態內容的地方。在我的案例中:

server.use(Express.static(path.join(__dirname, '../..', 'dist'))); 

意味着我必須將firebase-messaging-sw.js放入/ dist文件夾。

+0

它也適用於我與create-react-app工具的反應。 只需將sw文件放入/ public –

3

對於使用create反應的應用程序內的,你一個創建公共文件夾中的火力點的消息,sw.js和上index.js補充:

if ('serviceWorker' in navigator) { 
    navigator.serviceWorker.register('../firebase-messaging-sw.js') 
    .then(function(registration) { 
    console.log('Registration successful, scope is:', registration.scope); 
    }).catch(function(err) { 
    console.log('Service worker registration failed, error:', err); 
    }); 
} 
0

我有完全相同的問題,因爲在原來的問題,在過去的3天裏我沒有任何運氣經歷過各種解決方案。我正在使用ReactJS和Webpack。我試圖在我的根文件夾中包含名爲firebase-messaging-sw.js的文件,但它什麼也不做。

有人,請大家幫忙,因爲火力通知是在我開發的項目急需的功能...

編輯。

我設法通過安裝名爲sw-precache-webpack-plugin的webpack插件來解決註冊問題。這個插件爲你自動生成一個服務工作者文件到你的build目錄中。

+0

這不會提供問題的答案。你可以[搜索類似的問題](// stackoverflow.com/search),或者參考頁面右側的相關和鏈接問題來找到答案。如果你有一個相關但不同的問題,請[提出一個新問題](// stackoverflow.com/questions/ask),幷包含一個鏈接來幫助提供上下文。見:[問問題,得到答案,沒有分心](// stackoverflow.com/tour) –

+0

我的不好,我只是想這個問題得到關注,得到一個可能的解決方案。我應該刪除答案並將其添加爲評論或其他內容嗎? –

+0

這個帖子應該刪除,是的。關注注意事項:最好的辦法是[設置賞金](https://stackoverflow.com/help/privileges/set-bounties),但這需要75點聲望。像這樣的帖子和評論在這方面不太可能有幫助。 –