【问题标题】:Requirejs - error when trying to use firebase scriptsRequirejs - 尝试使用 firebase 脚本时出错
【发布时间】:2018-05-28 15:27:17
【问题描述】:

我正在登录页面,使用 firebase 进行用户身份验证。

这是 main.js 脚本

require.config({
    paths: {
        'firebase': '/scripts/lib/firebase-app',
        'firebase-auth': '/scripts/lib/firebase-auth',
        'firebase-database': '/scripts/lib/firebase-database'
    },
    shim: {
        'firebase-auth': ['firebase'],
        'firebase-database': ['firebase']
    }
});

我在 firebase-init.js 中有这个

define(['firebase'], function(firebase) {
    var config = {
        apiKey: "...",
        authDomain: "...",
        databaseURL: "...",
        projectId: "...",
        storageBucket: "...",
        messagingSenderId: "..."
    };
    firebase.initializeApp(config);
});

这是 login.js

define(['firebase', 'firebase-auth', 'firebase-init'], 
       function(firebase, firebaseAuth, firebaseInit) {
    ...
    code to login/logout user
    ...
});

当我运行它时,我得到了这个错误。

  TypeError
    columnNumber: 31509
    ​fileName: "http://localhost:3000/scripts/lib/firebase-auth.js"
    ​lineNumber: 1
    ​message: "n is undefined"
    ​stack: "Zn@http://localhost:3000/scripts/lib/firebase-auth.js:1:31509\nbi@http://localhost:3000/scripts/lib/firebase-auth.js:1:33789\n@http://localhost:3000/scripts/lib/firebase-auth.js:1:69619\n@http://localhost:3000/scripts/lib/firebase-auth.js:1:186\n@http://localhost:3000/scripts/lib/firebase-auth.js:1:2\n"

还有这个。

Error: Cannot instantiate firebase-auth - be sure to load firebase-app.js first.

这是我第一次使用 Requirejs。我有什么配置错误吗?在网络选项卡中,我可以看到 firebase-app.js 在 firebase-auth.js 之前加载。

谢谢。

PS:如果我使用 firebase.js,而不是分别使用 firebase-app.js 和 firebase-auth.js,效果会很好。

【问题讨论】:

  • 我认为这个库与 RequireJS 不兼容。尝试多次运行此代码,但我失败了:

标签: firebase requirejs


【解决方案1】:

你必须像“@firebase/app”一样调用firebase.app.js

在这里查看我的答案Error loading firebase js with requirejs

【讨论】:

    【解决方案2】:

    我认为您需要修改您的 firebase-init.js 模块以首先加载所有 firebase 模块,因为它们需要在调用 firebase.initializeApp 之前加载。

    define(['firebase', 'firebase-auth', 'firebase-database'], function(firebase) {
        var config = {
            apiKey: "...",
            authDomain: "...",
            databaseURL: "...",
            projectId: "...",
            storageBucket: "...",
            messagingSenderId: "..."
        };
        firebase.initializeApp(config);
    });
    

    您还应该考虑将 exports 添加到 shim。

    请确认这是否有效:)

    【讨论】:

    • 不,将所有firebase模块加载到firebase-init.js并没有改变错误。
    • @DamianDziaduch 你能弄明白吗?
    • @Mr.Dev 不,我没有
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多