Requirejs - 尝试使用firebase脚本时出错

时间:2018-05-28 15:27:18

标签: firebase requirejs

我正在使用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,它可以正常工作。

2 个答案:

答案 0 :(得分:0)

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

在这里Error loading firebase js with requirejs

查看我的答案

答案 1 :(得分:-1)

我认为您需要修改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添加到垫片中。

请确认这是否有效:)