> 웹 프론트엔드 > 프런트엔드 Q&A > nodejs가 이미지를 찾을 수 없습니다

nodejs가 이미지를 찾을 수 없습니다

王林
풀어 주다: 2023-05-11 21:16:05
원래의
493명이 탐색했습니다.

소개

Node.js는 웹 개발 분야에서 널리 사용되는 잘 알려진 JavaScript 런타임 환경입니다. 이 기사에서는 일반적인 문제를 소개합니다. Node.js를 사용하여 이미지 파일을 읽을 때 때때로 다음 오류가 발생합니다.

Error: ENOENT: no such file or directory, open './image.jpg'
로그인 후 복사

이는 Node.js가 이미지 파일을 올바르게 찾지 못하기 때문입니다. 그렇다면 이 문제를 해결하는 방법은 무엇입니까?

해결 방법

  1. 파일 경로 확인

먼저 파일 경로가 올바른지 확인해야 합니다. Node.js에서 상대 경로는 현재 작업 디렉터리를 기준으로 합니다. 글쎄, 우리는 현재 작업 디렉토리가 올바른지 확인해야 합니다. 다음 코드를 실행하여 현재 작업 디렉터리를 변경할 수 있습니다.

process.chdir('path/to/your/directory')
로그인 후 복사

물론 런타임에 명령줄 매개 변수를 전달하여 작업 디렉터리를 지정할 수도 있습니다.

$ node app.js path/to/your/directory
로그인 후 복사
process.chdir(process.argv[2] || '.')
로그인 후 복사

Unix 시스템의 경로 구분 기호는 주목할 가치가 있습니다. Windows 시스템은 다르며 Unix는 / 구분 기호를 사용하는 반면 Windows는 ` 구분 기호를 사용합니다. 두 시스템 모두와 호환하려면 Node.js 내장 모듈 path`를 사용하여 다음과 같이 경로를 처리해야 합니다. / 分隔符,而 Windows 使用 ` 分隔符。为了兼容这两个系统,我们应该使用 Node.js 内置模块 path` 来处理路径,如下所示:

const path = require('path')

path.join(__dirname, 'path/to/your/directory')
로그인 후 복사
  1. 使用绝对路径

如果你不能确保相对路径是正确的,那么你可以使用绝对路径来解决问题。使用绝对路径需要涉及到两个环境变量:__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
로그인 후 복사

    절대 경로 사용
    1. If 상대 경로가 올바른지 확인할 수 없으면 절대 경로를 사용하여 문제를 해결할 수 있습니다. 절대 경로를 사용하려면 __dirname__filename이라는 두 가지 환경 변수가 필요합니다.

      __dirname은 현재 스크립트가 있는 디렉터리의 절대 경로입니다.

      __filename은 현재 스크립트의 절대 경로입니다.

    우리가 읽어야 할 파일은 현재 스크립트가 위치한 디렉터리에 대한 상대 경로이므로 __dirname을 사용하여 현재 스크립트가 있는 디렉터리의 절대 경로를 가져올 수 있습니다. 찾은 다음 파일 경로를 연결합니다. 다음은 샘플 코드입니다.

    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
    로그인 후 복사
    🎜모듈을 사용할 때 현재 스크립트가 위치한 디렉터리에 상대적인 파일 경로만 전달하면 됩니다. 🎜rrreee🎜Summary🎜🎜이 문서에서는 모듈이 없는 문제를 해결하는 방법을 소개합니다. Node.js를 사용할 때 이미지를 찾는 방법 여러 가지 방법으로 파일 문제가 발생합니다. Node.js를 사용하여 이미지를 처리하는 경우 이미지 파일을 더 잘 처리하려면 이러한 방법을 익히는 것이 좋습니다. 🎜

    위 내용은 nodejs가 이미지를 찾을 수 없습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿