Introduction
Node.js est un environnement d'exécution JavaScript bien connu et largement utilisé dans le domaine du développement Web. Cet article présentera un problème courant : lors de l'utilisation de Node.js pour lire des fichiers image, nous rencontrons parfois l'erreur suivante :
Error: ENOENT: no such file or directory, open './image.jpg'
C'est parce que Node.js ne trouve pas correctement le fichier image. Alors, comment résoudre ce problème ?
Solution
Tout d'abord, nous devons vérifier si le chemin du fichier est correct. Dans Node.js, les chemins relatifs sont relatifs au répertoire de travail actuel. Eh bien, nous devons nous assurer que le répertoire de travail actuel est correct. Nous pouvons modifier le répertoire de travail actuel en exécutant le code suivant :
process.chdir('path/to/your/directory')
Bien sûr, vous pouvez également transmettre des paramètres de ligne de commande au moment de l'exécution pour spécifier le répertoire de travail :
$ node app.js path/to/your/directory
process.chdir(process.argv[2] || '.')
Il est à noter que le séparateur de chemin dans les systèmes Unix et les systèmes Windows sont différents, Unix utilise le délimiteur /
, tandis que Windows utilise le délimiteur `. Afin d'être compatible avec les deux systèmes, nous devons utiliser le module intégré
path` de Node.js pour gérer les chemins comme suit : /
分隔符,而 Windows 使用 ` 分隔符。为了兼容这两个系统,我们应该使用 Node.js 内置模块
path` 来处理路径,如下所示:
const path = require('path') path.join(__dirname, 'path/to/your/directory')
如果你不能确保相对路径是正确的,那么你可以使用绝对路径来解决问题。使用绝对路径需要涉及到两个环境变量:__dirname
和 __filename
。
__dirname
是当前脚本所在的目录的绝对路径。__filename
是当前脚本的绝对路径。因为我们需要读取的文件是相对于当前脚本所在目录的路径,所以我们可以使用 __dirname
const path = require('path') const fs = require('fs') const imagePath = path.join(__dirname, 'path/to/your/image.jpg') const imageStream = fs.createReadStream(imagePath) imageStream.on('error', (err) => { console.log(`Error: ${err}`) }) // do something with the image stream
__dirname
et __filename
. __dirname
est le chemin absolu vers le répertoire où se trouve le script actuel.
__filename
est le chemin absolu du script actuel.
Parce que le fichier que nous devons lire est le chemin relatif au répertoire où se trouve le script actuel, nous pouvons utiliser __dirname
pour obtenir le chemin absolu du répertoire où se trouve le script actuel. est localisé, puis divisez le chemin du fichier. Voici un exemple de code :
const path = require('path') const fs = require('fs') module.exports = function (filePath) { const imagePath = path.join(__dirname, filePath) const imageStream = fs.createReadStream(imagePath) return imageStream }
const getImage = require('./get-image') const imageStream = getImage('path/to/your/image.jpg') imageStream.on('error', (err) => { console.log(`Error: ${err}`) }) // do something with the image stream
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!