fs.writefile ne marche pas

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

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 !');
});

C’est bien joli de poster du code, mais si tu ne nous dis pas pourquoi, on ne pourra pas t’aider…

Cela dit, je devine que le fichier n’est toujours pas créé, à cela je répondrai que c’est normal (ligne 23 : deux paramètres au lieu de trois - le premier paramètre étant le problème).

+0 -0

C’est bien joli de poster du code, mais si tu ne nous dis pas pourquoi, on ne pourra pas t’aider…

Cela dit, je devine que le fichier n’est toujours pas créé, à cela je répondrai que c’est normal (ligne 23 : deux paramètres au lieu de trois - le premier paramètre étant le problème).

Jérôme Deuchnord

Le fichier popup.html est crée.

Le fichier popup.html est crée.

Awoken

Et donc quel est ton problème ? Une erreur précise ?

Et écoute Jérôme.

tleb

Si tu as bien lu le post, tu sais quel est le problème. fs.writeFile ne fonctionne pas.

C’est bien joli de poster du code, mais si tu ne nous dis pas pourquoi, on ne pourra pas t’aider…

Cela dit, je devine que le fichier n’est toujours pas créé, à cela je répondrai que c’est normal (ligne 23 : deux paramètres au lieu de trois - le premier paramètre étant le problème).

Jérôme Deuchnord

Je voulais juste voir si le code est bon.

Si tu as bien lu le post, tu sais quel est le problème. fs.writeFile ne fonctionne pas.

La fonction writeFile() fonctionne parfaitement. Elle ne fait simplement pas ce que tu souhaites, car tu n’arrives pas à lui parler correctement. Vois ça comme un étranger qui tente de te parler dans français très approximatif : tu vas avoir du mal à le comprendre, voire tu ne le comprendras pas du tout.

Je voulais juste voir si le code est bon.

Awoken

Du coup, non.

+0 -0

Si tu as bien lu le post, tu sais quel est le problème. fs.writeFile ne fonctionne pas.

La fonction writeFile() fonctionne parfaitement. Elle ne fait simplement pas ce que tu souhaites, car tu n’arrives pas à lui parler correctement. Vois ça comme un étranger qui tente de te parler dans français très approximatif : tu vas avoir du mal à le comprendre, voire tu ne le comprendras pas du tout.

Je voulais juste voir si le code est bon.

Awoken

Du coup, non.

Jérôme Deuchnord

C’est le writeFile qui marche pas ou autre chose ?

Sérieux, fais un effort.

Relis mes messages. Regarde la coloration syntaxique de ton éditeur. Compte les paramètres. Compare avec les exemples de la doc.

victor

"fais un effort" ? Je suis dessus depuis 2 semaines (et pas seulement 1 ou 2h par jours), dire que je cherche pas c’est faux.

Pour la coloration syntaxique, j’ai trouvé quelques erreurs grâce à ça donc merci de l’info :) Au niveau des paramètres, j’ai pas trouvé grand choses sauf un err qu’il manquait. Et les exemples de la doc, j’ai re-vérifié et j’ai trouvé une erreur.

Donc voici mon code :

 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, 'le writeFile a échoué')
      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 !');
});

Et donc, maintenant, que-ce qui ne fonctionne pas comme tu l’attends ?

Tu lis deux fois le même fichier puis tu mets le contenu dans ts et response, c’est normal ?

tleb

J’ai déjà essayé, ça affiche un :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
undefined:1
undefined
^

SyntaxError: Unexpected token u in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (C:\Users\admin\Desktop\addon\MonAPI\server.js:9:17)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Function.Module.runMain (module.js:605:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:575:3

`

D’après ce que j’ai compris, "u" n’est pas reconnu à la ligne 1. Sauf que je n’en vois pas …

 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
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 json = JSON.parse(ts);
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, 'le writeFile a échoué')
      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 eu quelques erreurs, j’ai essayé de les résoudres, et pour certaines j’ai réussi, mais celle-ci je comprends pas.

Dis-moi, Awoken, as-tu des bases en JavaScript ? Je commence sérieusement à me le demander, l’erreur commise ici étant classique chez les débutants.

Il est important d’avoir des connaissances solides en JavaScript pour s’aventurer en Node.js.

Jérôme Deuchnord

Je dirais pas ça, non. Node c’est juste un petit framework autour d’un runtime JS. C’est pas différent de JavaScript dans un autre contexte, genre un navigateur.

Il faut apprendre JavaScript pour utiliser JavaScript. Ça oui. Et là Awoken se trompe en tentant d’utiliser JavaScript sans apprendre/comprendre JavaScript. Mais après, Node est dans un sens moins compliqué que faire du JS dans un navigateur parce qu’un navigateur c’est un gros foutoir plein d’APIs bizarres et d’effets de bords.

+2 -0

Dis-moi, Awoken, as-tu des bases en JavaScript ? Je commence sérieusement à me le demander, l’erreur commise ici étant classique chez les débutants.

Il est important d’avoir des connaissances solides en JavaScript pour s’aventurer en Node.js.

Jérôme Deuchnord

Le javascript, oui je comprends. J’ai suivi plusieurs cours la-dessus, après c’est vrai que ça remonte à un peu longtemps et que j’ai pas pris le temps de revoir un peu ce langage.

Dis-moi, Awoken, as-tu des bases en JavaScript ? Je commence sérieusement à me le demander, l’erreur commise ici étant classique chez les débutants.

Il est important d’avoir des connaissances solides en JavaScript pour s’aventurer en Node.js.

Jérôme Deuchnord

Je dirais pas ça, non. Node c’est juste un petit framework autour d’un runtime JS. C’est pas différent de JavaScript dans un autre contexte, genre un navigateur.

Il faut apprendre JavaScript pour utiliser JavaScript. Ça oui. Et là Awoken se trompe en tentant d’utiliser JavaScript sans apprendre/comprendre JavaScript. Mais après, Node est dans un sens moins compliqué que faire du JS dans un navigateur parce qu’un navigateur c’est un gros foutoir plein d’APIs bizarres et d’effets de bords.

victor Le js je comprends mais depuis un certain temps j’ai des lacunes et je ne les revoies pas.

Justement, j’y ai réfléchis récemment et je voudrais refaire un cours la-dessus. Sur Openclassrooms j’aime pas trop leurs cours la-dessus, vous avez une solution ? (j’irais revoir le js après ce problème car c’est ma priorité).

+0 -0
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