【问题标题】:Trying to use pouchDB, saying that it's not defined when i think it is尝试使用pouchDB,说我认为它没有定义
【发布时间】:2020-05-21 19:03:55
【问题描述】:

我正在尝试将 pouchdb 添加到我的 pwa 以在离线时存储一些东西,以便我稍后发布它们。我首先从 app.js 注册了我的 Service Worker,然后我从中导入了另外两个具有 sw 逻辑的文件。其中一个文件是我放置数据库 sw_db.js 的逻辑的地方。我用 npm 安装了 pouchDB 并在 index.html 中为其添加了脚本标签,但是当我声明时:

const db = new PouchDB('acciones');

我明白了

sw_db.js:4 Uncaught ReferenceError: PouchDB is not defined
    at sw_db.js:4
    at sw.js:3

基本上,即使 pouchdb 中的方法自动完成,sw_db.js 也不知道 PouchDB。我已经尝试添加 CDN 或下载文件,但仍然无法正常工作。 pouchdb 的脚本标记也位于 index.html 中的 app.js 之前(它注册了 sw)。

【问题讨论】:

    标签: javascript node.js progressive-web-apps pouchdb


    【解决方案1】:

    我不确定您是在浏览器还是 NodeJS 上下文中使用 PouchDB。如果是在浏览器中,那么 PouchDB 模块应该像这样在 HTML 文件中定义:

    <script src="js/pouchdb.min.js"></script>
    

    假设您的 Web 服务器上有 PouchDB 模块。如果没有,您可以像这样从 CDN 使用它:

    <script src="//cdn.jsdelivr.net/npm/pouchdb@7.1.1/dist/pouchdb.min.js"></script>
    

    你的 Javascript 代码应该可以工作:

    const db = new PouchDB('my-db');
    

    但如果它在 NodeJS 脚本中,那么您需要使用 npm 安装 PouchDB,并在代码中声明它,如下所示:

    const PouchDB = require('pouchdb');
    

    然后和之前一样定义一个数据库:

    const db = new PouchDB('my-db');
    

    我希望这可以帮助您解决错误。

    【讨论】:

    • 感谢您的回复,虽然我已经尝试了所有这些,但我正在尝试在 Service Worker 中使用它。最后我不得不将 ImportScript(js/pouchdb.min.js) 添加到 SW 文件中。我花了一段时间才意识到那是缺失的。再次感谢您
    猜你喜欢
    • 2022-12-19
    • 2020-08-25
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2016-02-04
    相关资源
    最近更新 更多