Something is already running on port 3000이 포트가 사용되기 때문만은 아닙니다.

2962 단어
Something is already running on port 3000은 포트가 점용되었기 때문일 수도 있고 localhost 바인딩 도메인을 열지 않아 도메인 해석에 실패할 수도 있습니다.
추적 코드 검색:
로컬 서비스가 잘못 보고되면 들어갑니다
listen(port, 'localhost', err => {
  if (err) {
    console.log('  2',err)
    return handleError(err)
  }

  // 4. check current ip
  listen(port, address.ip(), (err, realPort) => {
    if (err) {
      console.log('  1')
      return handleError(err)
    }

    callback(null, realPort)
  })
})
function handleError() {
  port++
  if (port >= maxPort) {
    debug(
      'port: %s >= maxPort: %s, give up and use random port',
      port,
      maxPort
    )
    port = 0
    maxPort = 0
  }
  tryListen(host, port, maxPort, callback)
}

이 함수port에 한 번 들어가지 않으면 이err에 누적되는 이유는 host가 연결되지 않았기 때문입니다.
err 정보를 출력하는 것은 다음과 같습니다.
Error: getaddrinfo ENOTFOUND localhost     at errnoException (dns.js:28:10)     at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:73:26)   code: 'ENOTFOUND',   errno: 'ENOTFOUND',   syscall: 'getaddrinfo',   hostname: 'localhost' 
번역 후 대략적인 뜻은 귀속host가 없으면 dns 해석을 할 수 없다는 것이다
 
호출 대비 중 문제 발생
devserver 호출 함수
function choosePort(host, defaultPort) {
  return detect(defaultPort, host).then(
    port =>
      new Promise(resolve => {
   //         port              resolve(port)               port          (     host     127.0.0.1)

        if (port === defaultPort) {
          return resolve(port);
        }
        const message =
          process.platform !== 'win32' && defaultPort < 1024 && !isRoot()
            ? `Admin permissions are required to run a server on a port below 1024.`
            : `Something is already running on port ${defaultPort}.`;
        if (isInteractive) {
          // clearConsole();
          const existingProcess = getProcessForPort(defaultPort);
          const question = {
            type: 'confirm',
            name: 'shouldChangePort',
            message:
              chalk.yellow(
                message +
                  `${existingProcess ? ` Probably:
${existingProcess}` : ''}` ) + '

Would you like to run the app on another port instead?', default: true, }; inquirer.prompt(question).then(answer => { if (answer.shouldChangePort) { resolve(port); } else { resolve(null); } }); } else { console.log(chalk.red(message)); resolve(null); } }), err => { throw new Error( chalk.red(`Could not find an open port at ${chalk.bold(host)}.`) + '
' + ('Network error message: ' + err.message || err) + '
' ); } ); }

좋은 웹페이지 즐겨찾기