javascript - ServiceWorker 注册失败 : The script has an unsupported MIME type - reactjs

标签 javascript reactjs firebase

我想将 firebase 添加到我的项目中。 但我收到此错误消息:

FirebaseError {code: "messaging/failed-serviceworker-registration", message: "Messaging: We are unable to register the default s…). (messaging/failed-serviceworker-registration).", browserErrorMessage: "Failed to register a ServiceWorker: The script has an unsupported MIME type ('text/html').", stack: "FirebaseError: Messaging: We are unable to registe…es/@firebase/messaging/dist/index.cjs.js:1951:32)"}
browserErrorMessage: "Failed to register a ServiceWorker: The script has an unsupported MIME type ('text/html')."
code: "messaging/failed-serviceworker-registration"
message: "Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker: The script has an unsupported MIME type ('text/html'). (messaging/failed-serviceworker-registration)."
stack: "FirebaseError: Messaging: We are unable to register the default service worker. Failed to register a ServiceWorker: The script has an unsupported MIME type ('text/html'). (messaging/failed-serviceworker-registration).↵    at eval (webpack-internal:///./node_modules/@firebase/messaging/dist/index.cjs.js:1951:32)"
__proto__: Error

解决方法: 我必须将 firebase-messaging-sw.js 文件放在 public 目录中。

但是在 reactjs 上,我们没有public 目录。

enter image description here

最佳答案

如果您使用的是 React 样板文件:

我是这样加的:

new OfflinePlugin({
  relativePaths: false,
  publicPath: '/',
  appShell: '/',
  ServiceWorker: {
    events: true,
    entry: path.join(process.cwd(), 'app/firebase-messaging-sw.js') //<-- path for your extended service worker
  },

  // No need to cache .htaccess. See http://mxs.is/googmp,
  // this is applied before any match in `caches` section
  excludes: ['.htaccess'],

我有一个 push-notification.js,我应该在其中调用 firebase-messaging-sw.js:

  navigator.serviceWorker
    .register('./firebase-messaging-sw.js')
    .then((registration) => {
      firebase.messaging().useServiceWorker(registration);
    });

两个文件是同一个目录(app)。 如果你得到同样的错误,

然后:

app.js
`import 'file-loader?name=firebase-messaging-sw.js!./firebase-messaging-sw.js';`

关于javascript - ServiceWorker 注册失败 : The script has an unsupported MIME type - reactjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54060108/

相关文章:

javascript - 如何使用 Chosen 或其他下拉插件在选项名称之前显示额外的跨度?

firebase - FLUTTER:如何在流构建器中使用导航器?

node.js - firebase 云功能引擎 Node 与此模块不兼容

android - 更新 PlayServices 和 Firebase 的新版本 10.2.0 时出现问题

javascript - 在以对象文字表示法设置其他属性时如何获取属性?

javascript - 在node.js中查找主机?

使用 indexOf 的 javascript 搜索不适用于 map()

javascript - 在 Chrome 扩展中使用 React js

javascript - 用 [] react setState

reactjs - React 中的 Prism.js html 示例