0
Whoa, what’s up, man? I’m doing a various firebase test project. Because he’s making the following mistake:
Uncaught TypeError: Cannot read property 'addEventListener' of null
This error is being given on line 36 of my javascript code:
var firebaseConfig = {
apiKey: "0",
authDomain: "0",
databaseURL: "0",
projectId: "0",
storageBucket: "0",
messagingSenderId: "0",
appId: "0",
measurementId: "0"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
var firestore = firebase.firestore();
const outputHeader = document.querySelector("#numeroOutput");
const inputTextFieldNome = document.querySelector("#nome");
const inputTextFieldIdade = document.querySelector("#idade");
const saveButton = document.querySelector("#mandar");
saveButton.addEventListener("click", function () {
const nome = inputTextFieldNome.value;
const idade = inputTextFieldIdade.value;
console.log("Estamos dalvando o seu numero");
const docRef = firestore.collection("usuarios/").doc(nome);
docRef.set({
Idade: idade
}).then(function () {
console.log("Salvo com sucesso!");
}).catch(function (error) {
console.log("Peguei um erro", error);
});
});
var uploader = document.querySelector("#uploader");
var fileButton = document.querySelector("#fileButton");
fileButton.addEventListener("change", function (e) {
//Get File
var file = e.target.files[0];
//Storage Reference
var storageRef = firebase.storage().ref("txts/" + file.name);
//Upload File
var task = storageRef.put(file);
//Update Progress Bar
task.on("state_changed",
function progress(snapshot) {
var percentage = snapshot.bytesTransferred / snapshot.totalBytes * 100;
uploader.value = percentage;
},
function error(err) {
},
function complete() {
});
});
The firebaseConfig is reset because I put it like this so I can post. And my HTML code is as follows:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Firebase</title>
<style media="screen">
body{
display: flex;
min-height: 100vh;
width: 100%;
padding: 0;
margin: 0;
align-items: center;
justify-content: center;
flex-direction: column;
}
#uploader{
-webkit-appearance: none;
appearance: none;
width: 50%;
margin-bottom: 10px;
}
</style>
<script src="https://www.gstatic.com/firebasejs/7.15.4/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.4/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.4/firebase-storage.js"></script>
</head>
</head>
<body>
<h1 id="numeroOutput">Firebase</h1>
<h2>Firestore</h2>
Nome : <input type="textfield" id="nome"><br>
Idade : <input type="textfield" id="idade"><br>
<button id="mandar">Enviar!</button>
<script src="./app.js"></script>
<br>
<h2>Storage</h2>
<progress value="0" max="100" id="uploader">0%</progress><br>
<input type="file" value="upload" id="fileButton" />
</body>
</html>
Help me please!
By error message it is possible to deduce that the variable
fileButtonis as the valuenull. But the code to start it is correct, it is possible that your Javascript is running before the DOM is loaded, so it does not find the element#fileButton. Try to put your code inside a function and then invoke that function in the eventonloadof your page, which is fired when the DOM is loaded completely.– Andre
Important you [Dit] your question and explain objectively and punctually the difficulty found, accompanied by a [mcve] of the problem and attempt to solve. To better enjoy the site, understand and avoid closures and negativities worth reading the Stack Overflow Survival Guide in English.
– Bacco