Посылка: настроенный порт 1234 не может быть использован - PullRequest
2 голосов
/ 29 сентября 2019

Мне нужно запустить мое приложение ReactJS на порту 1234, но когда я запускаю yarn dev, я получаю следующее:

$ parcel src / index.html --port 1234

Сервер работает на http://localhost:2493 - настроенный порт 1234 не может быть использован.

√ Встроенный 11,45 с.

Это не говорит мне почему он не может работать на порту 1234, поэтому я подозревал, что порт уже может использоваться. Согласно этому ответу , следующее должно сказать мне, какой процесс использует этот порт.

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

Но это не помогло, он дал следующее сообщение:

Get-NetTCPConnection: не найдено объектов MSFT_NetTCPConnection со свойством 'LocalPort', равным '1234'. Проверьте значение свойства и повторите попытку.

Я предполагаю, что процесс не связан с портом 1234. Но если это так, почему я не могу привязаться к этому порту?

Мой package.json выглядит следующим образом:

{
    "name": "bejebeje.react",
    "version": "1.0.0",
    "description": "bejebeje's react-js frontend",
    "main": "index.js",
    "repository": "git@github.com:JwanKhalaf/Bejebeje.React.git",
    "author": "John",
    "license": "GPL-3.0",
    "dependencies": {
        "@fortawesome/fontawesome-svg-core": "^1.2.19",
        "@fortawesome/free-brands-svg-icons": "^5.9.0",
        "@fortawesome/free-solid-svg-icons": "^5.9.0",
        "@fortawesome/pro-light-svg-icons": "^5.9.0",
        "@fortawesome/pro-regular-svg-icons": "^5.9.0",
        "@fortawesome/pro-solid-svg-icons": "^5.9.0",
        "@fortawesome/react-fontawesome": "^0.1.4",
        "@reach/router": "^1.2.1",
        "oidc-client": "^1.8.2",
        "react": ">=16",
        "react-dom": "^0.14.9 || ^15.3.0 || ^16.0.0-rc || ^16.0",
        "react-icons": "^3.7.0",
        "styled-components": "^4.3.2"
    },
    "scripts": {
        "dev": "parcel src/index.html --port 1234",
        "build": "parcel build src/index.html"
    },
    "devDependencies": {
        "@fortawesome/fontawesome-pro": "^5.9.0",
        "axios": "^0.19.0",
        "parcel-bundler": "^1.12.3",
        "prettier": "^1.16.4",
        "sass": "^1.22.5"
    }
}

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

После создания небольшого веб-сервера на C #, который пытался привязаться к порту 1234, я все еще не мог заставить его работать. Он попытается выполнить привязку, но выдаст исключение:

Была сделана попытка получить доступ к сокету способом, запрещенным его разрешениями на доступ.

В любом случае,после долгих усилий и исследований вот что в итоге сработало:

Сначала отключите hyper-v (это перезагрузит ваш компьютер, поэтому убедитесь, что вся работа сохранена). В PowerShell (от имени администратора) выполните следующее:

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

Когда ваш компьютер перезагрузится, вам нужно зарезервировать порт, который вы хотите, чтобы Hyper-V не зарезервировал его обратно, снова через PowerShell в качестве администратора,выполните следующее:

netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1

Теперь, наконец, снова включите Hyper-V (ПК снова перезагрузится), снова через PowerShell от имени администратора:

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

, когда ваш компьютер завершит работу и будетрезервное копирование, вы должны быть в состоянии успешно подключиться к этому порту.

0 голосов
/ 12 октября 2019

Локальное тестирование с посылкой. Мне удалось получить ту же ошибку, сознательно форсировав следующие состояния:

  • Используемый порт
  • Несанкционированное использование порта
  • Неверный порт

Полученное сообщение об ошибке довольно грубое. Чтобы определить, что является настоящей ошибкой, вы можете попробовать связать порт с другим языком или программой, которую вы хотите. Поскольку я был в javascript, мы можем использовать этот скрипт

require('http').createServer(function(){}).listen(1234);

В моем случае я уже связал порт 1234 в другом приложении и получаю следующую ошибку:

events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::1234
    at Server.setupListenHandle [as _listen2] (net.js:1270:14)
    at listenInCluster (net.js:1318:12)
    at Server.listen (net.js:1405:7)
    at Object.<anonymous> (C:\workdir\ETL_feed\listen.js:1:106)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
Emitted 'error' event at:
    at emitErrorNT (net.js:1297:8)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at Function.Module.runMain (internal/modules/cjs/loader.js:757:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)

Как выможно увидеть это сообщение об ошибке гораздо более подробно, что ошибка посылки. При связывании портов многие используются существующими приложениями, например, Википедия сообщает, что порт 1234 используется медиаплеером VLC (однако он сообщает только UDP).

...