[ajouter] Donc mon prochain problème est que lorsque j'essaye d'ajouter une nouvelle dépendance (npm install --save socket.io). Le fichier JSON est également valide. J'obtiens cette erreur: Échec de l'analyse de json
npm ERR! Unexpected string
npm ERR! File: /Users/John/package.json
npm ERR! Failed to parse package.json data.
npm ERR! package.json must be actual JSON, not just JavaScript.
npm ERR!
npm ERR! This is not a bug in npm.
npm ERR! Tell the package author to fix their package.json file. JSON.parse
J'ai donc essayé de comprendre pourquoi cette erreur était de retour. Tous les fichiers (HTML, JSON, JS) se trouvent dans le même dossier sur mon bureau. J'utilise node.js et socket.io
Ceci est mon fichier JS:
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res){
res.sendFile('index.html');
});
http.listen(3000,function(){
console.log('listening on : 3000');
});
Voici ce qui est retourné:
MacBook-Pro:~ John$ node /Users/John/Desktop/Chatapp/index.js
listening on : 3000
TypeError: path must be absolute or specify root to res.sendFile
at ServerResponse.sendFile (/Users/John/node_modules/express/lib/response.js:389:11)
at /Users/John/Desktop/Chatapp/index.js:5:7
at Layer.handle [as handle_request] (/Users/John/node_modules/express/lib/router/layer.js:76:5)
at next (/Users/John/node_modules/express/lib/router/route.js:100:13)
at Route.dispatch (/Users/John/node_modules/express/lib/router/route.js:81:3)
at Layer.handle [as handle_request] (/Users/John/node_modules/express/lib/router/layer.js:76:5)
at /Users/John/node_modules/express/lib/router/index.js:234:24
at Function.proto.process_params (/Users/John/node_modules/express/lib/router/index.js:312:12)
at /Users/John/node_modules/express/lib/router/index.js:228:12
at Function.match_layer (/Users/John/node_modules/express/lib/router/index.js:295:3)
TypeError: path must be absolute or specify root to res.sendFile
at ServerResponse.sendFile (/Users/John/node_modules/express/lib/response.js:389:11)
at /Users/John/Desktop/Chatapp/index.js:5:7
at Layer.handle [as handle_request] (/Users/John/node_modules/express/lib/router/layer.js:76:5)
at next (/Users/John/node_modules/express/lib/router/route.js:100:13)
at Route.dispatch (/Users/John/node_modules/express/lib/router/route.js:81:3)
at Layer.handle [as handle_request] (/Users/John/node_modules/express/lib/router/layer.js:76:5)
at /Users/John/node_modules/express/lib/router/index.js:234:24
at Function.proto.process_params (/Users/John/node_modules/express/lib/router/index.js:312:12)
at /Users/John/node_modules/express/lib/router/index.js:228:12
at Function.match_layer (/Users/John/node_modules/express/lib/router/index.js:295:3)
la source
path.resolve(__dirname, '.../public')
? Cela résoudra le sous-répertoire «public» du répertoire parent du script.../../<etc>
syntaxe de type. Notez la virgule entre__dirname
et../public
. L'utilisation du signe + ne fonctionne pas.Essayez d'ajouter le chemin racine.
la source
dans les fichiers .mjs, nous n'avons pour l'instant pas __dirname
Par conséquent
la source
Si vous faites confiance au chemin, path.resolve est une option:
la source
L'erreur est assez simple. La raison est probablement que votre fichier index.html ne se trouve pas dans le répertoire racine.
Ou s'il se trouve dans le répertoire racine, le référencement relatif ne fonctionne pas.
Vous devez donc indiquer l'emplacement exact de votre fichier sur le serveur. Cela pourrait être fait en utilisant la méthode dirname dans NodeJs. Remplacez simplement votre code par celui-ci:
Assurez-vous que vous ajoutez la barre oblique "/" symbole avant votre page d'accueil. Sinon, votre chemin deviendra: rootDirectoryindex.html
Alors que vous voulez que ce soit: rootDirectory / index.html
la source
Je résous cela en utilisant la variable de chemin. L'exemple de code ressemblera à ci-dessous.
la source
Si vous travaillez sur le répertoire racine, vous pouvez utiliser cette approche
mais si vous utilisez des routes qui se trouvent dans un dossier, disons,
/Routes/someRoute.js
vous devrez faire quelque chose comme çala source
Dans TypeScript avec chemin d'accès relatif à l'icône:
la source
Il redirigera vers index.html sur localhost: appel 8080.
la source
J'ai utilisé le code ci-dessous et essayé d'afficher le fichier sitemap.xml
la source
Cela peut être résolu d'une autre manière:
process.env.PWD
ajoutera le répertoire de travail au début du processus.la source
Je l'ai fait et maintenant mon application fonctionne correctement,
la source
Vous pouvez envisager d'utiliser des doubles barres obliques sur votre répertoire, par exemple
la source