Comment résoudre le problème de chemin de nodejs
Cet article présente principalement la solution au problème du chemin nodejs. Le contenu est assez bon, je vais le partager avec vous maintenant et le donner comme référence.
Un projet de développement récent de l'entreprise utilisait nodejs comme backend. Au cours des deux derniers jours, j'avais besoin de l'emballer pour une démonstration client, j'ai donc demandé à un gars de l'entreprise de transplanter l'outil d'emballage de l'ancienne salle informatique 3D. Après l'empaquetage, j'ai constaté que le projet qui fonctionnait initialement bien dans l'environnement de développement n'était plus accessible. Il y a un problème qui empêche l'accès à la page d'accueil du projet :
impossible d'obtenir le fichier index.html
express .static
Quel est le problème ?
Le backend nodejs utilise express et index.html est un fichier statique. Nous savons que les fichiers statiques, tels que les images, les fichiers CSS, JavaScript, etc., peuvent être facilement hébergés via express.static intégré à Express.
Passer le répertoire où se trouvent les fichiers de ressources statiques en tant que paramètre au middleware express.static peut donner accès aux fichiers de ressources statiques. Par exemple, en supposant que les images, les fichiers CSS et JavaScript sont placés dans le répertoire public, vous pouvez utiliser le code suivant :
app.use(express.static('public'));
Alors, trouvez le code dans le projet et vérifiez où l'appel statique est effectué , qui est très similaire à la ligne de code ci-dessus :
app.use(express.static('public'));
À ce stade, j'ai découvert le problème, j'ai dit à mes amis que ce problème pouvait être résolu sans utiliser de chemins relatifs. En raison du temps limite pour faire mes bagages, j'ai demandé à mes amis de s'en occuper brièvement d'abord. Après avoir fait mes bagages, je ferai le tri dans mes pensées :
app.use(express.static('resource/public'));
Bien sûr, le plus important est que ce problème soit. pas difficile, vous pouvez donc étudier davantage par vous-même, il est facile de trouver le problème, et ce problème ne se produira pas, alors mes amis, faites-le vous-même.
Eh bien, vous avez bien lu, cet endroit est toujours un annuaire relatif. Cela sera modifié pour une meilleure situation dans les produits ultérieurs.
Analyse de la méthode Express.static
En fait, si la méthode express.static passe dans un chemin relatif, express la convertira tout seul Pour un chemin absolu, nous pouvons vérifier le code source et trouver le code suivant dans express.js :
exports.static = require('serve-static');
Description static appelle le package serve-static, trouvez directement ce package, vérifiez index.js, vous peut voir En ce qui concerne le code, les deux lignes importantes
... var resolve = require('path').resolve ... opts.root = resolve(root) ...
sont répertoriées ci-dessous. Ces deux lignes sont le code pour express pour convertir le répertoire relatif en répertoire absolu. du chemin d'objet intégré est finalement utilisé.
Méthode de résolution de l'objet chemin
Consultez directement la documentation de l'API de cette méthode, comme suit : https://nodejs.org/api /path .html#path_path_resolve_paths
Voici une explication de cette méthode :
La méthode path.resolve() résout une séquence de chemins ou de segments de chemin dans un chemin absolu.
Qu'est-ce que cela signifie ? Cette méthode organise une série de chemins ou de segments de chemin en un chemin absolu, tel que
path.resolve('/foo','bar'); // return /foo/bar
Veuillez vous référer à la documentation pour des instructions détaillées. Il y a ici une phrase qui nécessite une attention particulière :
<🎜. >
Si après avoir traité tous les segments de chemin donnés, un chemin absolu n'a pas encore été généré, le répertoire de travail actuel est utilisé.Qu'est-ce que cela signifie, c'est-à-dire : si tous les segments de chemin et un chemin absolu ne sont pas générés, le répertoire de travail actuel doit être utilisé. Par exemple :
path.resolve('bar'); // 加上 /Users/terry 是当前工作目录, return /Users/terry/bar
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif'); // if the current working directory is /home/myself/node, // this returns '/home/myself/node/wwwroot/static_files/gif/image.gif'
répertoire de travail actuel de nodejs répertoire de travail actuel
console.log(process.cwd());
/Users/terry/Documents/JSWorkspace
/Users/terry/Documents
Comment résoudre
Solution :
1.在前面已经说过了,改这个相对目录。但这种方法很蹩脚。因为,启动node命令的目录可能会变;而是如果这应该,开发阶段的node命令执行也需要跟着改。 总之不是兼容性很好的方法。
2.直接使用绝对路径。 但是这个绝对路径在不同的机器上又不一样,该如何解决呢?可以考虑使用全局变量__dirname.
全局变量__dirname
查看api文档 https://nodejs.org/api/modules.html#modules_dirname
看到解释如下:
The directory name of the current module. This is the same as the path.dirname() of the __filename。
啥意思呢,及时返回nodejs 的js文件的所在目录。
有了这个变量之后,我们就可以用如下代码解决这个问题。
app.use(express.static(__dirname + '/public'));
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Node.js est un environnement d'exécution JavaScript côté serveur, tandis que Vue.js est un framework JavaScript côté client permettant de créer des interfaces utilisateur interactives. Node.js est utilisé pour le développement côté serveur, comme le développement d'API de service back-end et le traitement des données, tandis que Vue.js est utilisé pour le développement côté client, comme les applications monopage et les interfaces utilisateur réactives.

Node.js peut être utilisé comme framework backend car il offre des fonctionnalités telles que des performances élevées, l'évolutivité, la prise en charge multiplateforme, un écosystème riche et une facilité de développement.

Pour vous connecter à une base de données MySQL, vous devez suivre ces étapes : Installez le pilote mysql2. Utilisez mysql2.createConnection() pour créer un objet de connexion contenant l'adresse de l'hôte, le port, le nom d'utilisateur, le mot de passe et le nom de la base de données. Utilisez connection.query() pour effectuer des requêtes. Enfin, utilisez connection.end() pour mettre fin à la connexion.

Il existe deux fichiers liés à npm dans le répertoire d'installation de Node.js : npm et npm.cmd. Les différences sont les suivantes : différentes extensions : npm est un fichier exécutable et npm.cmd est un raccourci de fenêtre de commande. Utilisateurs Windows : npm.cmd peut être utilisé à partir de l'invite de commande, npm ne peut être exécuté qu'à partir de la ligne de commande. Compatibilité : npm.cmd est spécifique aux systèmes Windows, npm est disponible multiplateforme. Recommandations d'utilisation : les utilisateurs Windows utilisent npm.cmd, les autres systèmes d'exploitation utilisent npm.

Les variables globales suivantes existent dans Node.js : Objet global : global Module principal : processus, console, nécessiter Variables d'environnement d'exécution : __dirname, __filename, __line, __column Constantes : undefined, null, NaN, Infinity, -Infinity

Les principales différences entre Node.js et Java résident dans la conception et les fonctionnalités : Piloté par les événements ou piloté par les threads : Node.js est piloté par les événements et Java est piloté par les threads. Monothread ou multithread : Node.js utilise une boucle d'événements monothread et Java utilise une architecture multithread. Environnement d'exécution : Node.js s'exécute sur le moteur JavaScript V8, tandis que Java s'exécute sur la JVM. Syntaxe : Node.js utilise la syntaxe JavaScript, tandis que Java utilise la syntaxe Java. Objectif : Node.js convient aux tâches gourmandes en E/S, tandis que Java convient aux applications de grande entreprise.

Oui, Node.js est un langage de développement backend. Il est utilisé pour le développement back-end, notamment la gestion de la logique métier côté serveur, la gestion des connexions à la base de données et la fourniture d'API.

Étapes de déploiement de serveur pour un projet Node.js : Préparez l'environnement de déploiement : obtenez l'accès au serveur, installez Node.js, configurez un référentiel Git. Créez l'application : utilisez npm run build pour générer du code et des dépendances déployables. Téléchargez le code sur le serveur : via Git ou File Transfer Protocol. Installer les dépendances : connectez-vous en SSH au serveur et installez les dépendances de l'application à l'aide de npm install. Démarrez l'application : utilisez une commande telle que node index.js pour démarrer l'application ou utilisez un gestionnaire de processus tel que pm2. Configurer un proxy inverse (facultatif) : utilisez un proxy inverse tel que Nginx ou Apache pour acheminer le trafic vers votre application
