fs.writefile ne marche pas

Le problème exposé dans ce sujet a été résolu.

Tu n’as pas assez de paramètre pour writeFile.

Regarde la doc : https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback Il manque data :p

(La documentation déconseille d’utiliser readFileSync dans une application serveur car ça fige l’application).

A-312
+0 -0

Tu n’as pas assez de paramètre pour writeFile.

Regarde la doc : https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback Il manque data :p

(La documentation déconseille d’utiliser readFileSync dans une application serveur car ça fige l’application).

A-312
victor

Dans la doc, je vois ça :

1
2
3
4
5
6
const fs = require('fs');

fs.writeFile('message.txt', 'Hello Node.js', (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});

As-tu le message The file has been saved! ?

Si oui, alors le fichier devrait se trouver dans C:\Users\admin\Desktop\addon\MonAPI\Extension_Chrome\popup.html.

Si non, essaie de remplacer la ligne 2 par ceci (il est possible que les exceptions levées ne soient pas transmises à la console) :

1
2
if(err)
    console.log(err);
+0 -0

Il vaut mieux que son truc s’arrête en montrant l’erreur dès qu’elle se produit.

victor

Effectivement, le programme ne va plus s’arrêter, je n’y avais pas pensé. Par contre, est-on sûr que l’erreur va bien s’afficher ? Je connais mal la console de Windows, et il me semblait que dans certains cas, elle restait silencieuse :-/

+0 -0

Tenez :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
const express = require('express'); // Inclusion de ExpressJS
const fs = require('fs'); // Inclusion de fs (fs.readFile/fs.writeFile)
const path = require('path');
const moment = require('moment');
const writefile = require('writefile');
var app = express(); // Utilisé pour app.get/put/delete/post
var port = 9500; // On définit la valeur du port sur 9500


// URL
app.get('/api', function (req, res) {

// On lit le ficher time.json dans TimeBot/json/time.json. Puis, on envoie "timestamp" dans le res.send.



let ts_str = fs.readFileSync('./TimeBot/json/time.json', { encoding: 'utf-8' });
let ts = JSON.parse(ts_str);
let ts_remaining_str = moment(ts.timestamp).fromNow(); 
let msg = "The stream begin in " + ts_remaining_str + "";
res.send(msg);



});

app.get('/', function (req, res){
      res.send("va pas ici, y'a rien. Va plutôt à cette adresse : http://localhost:9500/api");
});


app.get('/', function(req, res) {
  try {
    let ts = fs.readFile('./TimeBot/json/time.json', { encoding: 'utf-8' });
    res.render('index', { timestamp: JSON.parse(ts).timestamp });


    moment(1500048000000).fromNow();

fs.writeFile("C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html', 'Hello Node.js'", (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});


  } catch (e) { 
    res.send("error");
  }
});





// Port sur lequel est lu le serveur, soit 9500
app.listen(port, function(err){
    if (err) throw err;
    console.log("nickel !");
});



///////////////////////////////////MOMENTJS///////////////////////////////////////

tu place ton code dans un try-catch, mais tu ne sort pas l’erreur :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
app.get('/', function(req, res) {
  try {
    let ts = fs.readFile('./TimeBot/json/time.json', { encoding: 'utf-8' });
    res.render('index', { timestamp: JSON.parse(ts).timestamp });


    moment(1500048000000).fromNow();

fs.writeFile("C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html', 'Hello Node.js'", (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});


  } catch (e) { 
    res.send("error");
  }
});

il faudrait ajouter dans le catch la sortie de l’erreur dans la console

Le try/catch est inutile, surtout.

Et il faut indenter ton code, là c’est illisible.

Au fait, tu vois pas une erreur là :

fs.writeFile("C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html', 'Hello Node.js'", (err) => {

?

Je te la fais plus courte :

fs.writeFile("C:\\popup.html', 'Hello Node.js'", (err) => {


Comme ton code est atrocement sale (est-ce que tu as un éditeur de code ? avec de la coloration syntaxique ?), je me suis permis :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const express = require('express') // Inclusion de ExpressJS
const fs = require('fs') // Inclusion de fs (fs.readFile/fs.writeFile)
const moment = require('moment')
const app = express() // Utilisé pour app.get/put/delete/post
const port = 9500 // On définit la valeur du port sur 9500


app.get('/api', function (req, res) {
  // On lit le ficher time.json dans TimeBot/json/time.json
  const response = fs.readFileSync('./TimeBot/json/time.json', {encoding: 'utf-8'})
  const json = JSON.parse(response)
  const secsRemaining = moment(json.timestamp).fromNow()
  const msg = `The stream begins in ${secsRemaining}s`
  res.send(msg)
})

app.get('/', function (req, res) {
  const ts = fs.readFile('./TimeBot/json/time.json', {encoding: 'utf-8'})
  const destination = 'C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html'
  const content = 'Hello Node.js'

  moment(1500048000000).fromNow()

  fs.writeFile("destination, content", (err) => {
    if (err) {
      console.error(err, 'writeFile failed')
      return res.status(500).send(err)
    }

    res.render('index', {
      timestamp: JSON.parse(ts).timestamp
    })
  })
})

// Port sur lequel est lu le serveur, soit 9500
app.listen(port, function (err) {
  if (err) throw err
  console.log('nickel !')
})

J’ai laissé quelques erreurs, à toi de les corriger.

+2 -0

Le try/catch est inutile, surtout.

Et il faut indenter ton code, là c’est illisible.

Au fait, tu vois pas une erreur là :

fs.writeFile("C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html', 'Hello Node.js'", (err) => {

?

Je te la fais plus courte :

fs.writeFile("C:\\popup.html', 'Hello Node.js'", (err) => {


Comme ton code est atrocement sale (est-ce que tu as un éditeur de code ? avec de la coloration syntaxique ?), je me suis permis :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const express = require('express') // Inclusion de ExpressJS
const fs = require('fs') // Inclusion de fs (fs.readFile/fs.writeFile)
const moment = require('moment')
const app = express() // Utilisé pour app.get/put/delete/post
const port = 9500 // On définit la valeur du port sur 9500


app.get('/api', function (req, res) {
  // On lit le ficher time.json dans TimeBot/json/time.json
  const response = fs.readFileSync('./TimeBot/json/time.json', {encoding: 'utf-8'})
  const json = JSON.parse(response)
  const secsRemaining = moment(json.timestamp).fromNow()
  const msg = `The stream begins in ${secsRemaining}s`
  res.send(msg)
})

app.get('/', function (req, res) {
  const ts = fs.readFile('./TimeBot/json/time.json', {encoding: 'utf-8'})
  const destination = 'C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html'
  const content = 'Hello Node.js'

  moment(1500048000000).fromNow()

  fs.writeFile("destination, content", (err) => {
    if (err) {
      console.error(err, 'writeFile failed')
      return res.status(500).send(err)
    }

    res.render('index', {
      timestamp: JSON.parse(ts).timestamp
    })
  })
})

// Port sur lequel est lu le serveur, soit 9500
app.listen(port, function (err) {
  if (err) throw err
  console.log('nickel !')
})

J’ai laissé quelques erreurs, à toi de les corriger.

victor

Oui, j’utilise Visual Studio Code, mais comme je change très souvent le code pour essayer de voir mes erreurs, je change beaucoup l’intendation. Je vais essayer de m’améliorer sur ce point.

Je comprends pas… C:\popup.html n’est pas censé marcher…

Sauf que dans le cas actuel il a pas mis C:\popup.html en argument.

AmarOk

Si c’est bon j’en vois une !

Normalement ça devrait être :

1
2
3
4
fs.writeFile('C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html', 'Hello Node.js', (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});

Le try/catch est inutile, surtout.

Et il faut indenter ton code, là c’est illisible.

Au fait, tu vois pas une erreur là :

fs.writeFile("C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html', 'Hello Node.js'", (err) => {

?

Je te la fais plus courte :

fs.writeFile("C:\\popup.html', 'Hello Node.js'", (err) => {


Comme ton code est atrocement sale (est-ce que tu as un éditeur de code ? avec de la coloration syntaxique ?), je me suis permis :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const express = require('express') // Inclusion de ExpressJS
const fs = require('fs') // Inclusion de fs (fs.readFile/fs.writeFile)
const moment = require('moment')
const app = express() // Utilisé pour app.get/put/delete/post
const port = 9500 // On définit la valeur du port sur 9500


app.get('/api', function (req, res) {
  // On lit le ficher time.json dans TimeBot/json/time.json
  const response = fs.readFileSync('./TimeBot/json/time.json', {encoding: 'utf-8'})
  const json = JSON.parse(response)
  const secsRemaining = moment(json.timestamp).fromNow()
  const msg = `The stream begins in ${secsRemaining}s`
  res.send(msg)
})

app.get('/', function (req, res) {
  const ts = fs.readFile('./TimeBot/json/time.json', {encoding: 'utf-8'})
  const destination = 'C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html'
  const content = 'Hello Node.js'

  moment(1500048000000).fromNow()

  fs.writeFile("destination, content", (err) => {
    if (err) {
      console.error(err, 'writeFile failed')
      return res.status(500).send(err)
    }

    res.render('index', {
      timestamp: JSON.parse(ts).timestamp
    })
  })
})

// Port sur lequel est lu le serveur, soit 9500
app.listen(port, function (err) {
  if (err) throw err
  console.log('nickel !')
})

J’ai laissé quelques erreurs, à toi de les corriger.

victor
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const express = require('express'); // Inclusion de ExpressJS
const fs = require('fs'); // Inclusion de fs (fs.readFile/fs.writeFile)
const moment = require('moment');
const app = express(); // Utilisé pour app.get/put/delete/post
const port = 9500; // On définit la valeur du port sur 9500
var ts = fs.readFile('./TimeBot/json/time.json', {encoding: 'utf-8'});
var destination = 'C:\\Users\\admin\\Desktop\\addon\\MonAPI\\Extension_Chrome\\popup.html';
var content = 'Hello Node.js';
var response = fs.readFile('./TimeBot/json/time.json', {encoding: 'utf-8'});
var json = JSON.parse(response);
var secsRemaining = moment(json.timestamp).fromNow();
var msg = `The stream begins in ${secsRemaining}s`;

app.get('/api', function (req, res) {
  // On lit le ficher time.json dans TimeBot/json/time.json
  res.send(msg)
});

app.get('/', function (req, res) {

  moment(1500048000000).fromNow()

  fs.writeFile("destination, content", (err) => {
    if (err) {
      console.error(err, 'writeFile failed')
      return res.status(500).send(err)
    }

    res.render('index', {
      timestamp: JSON.parse(ts).timestamp
    });
  });
});

// Port sur lequel est lu le serveur, soit 9500
app.listen(port, function (err) {
  if (err) throw err
  console.log('nickel !');
});
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte