Vue Npm Run подача запускается на случайном порту
Я пытаюсь запустить Vue через порт 8080, но не могу заставить это работать. Я только что создал новый проект с vue create .
и запустил его с npm run serve
, который запускает приложение на случайном порте.
Первая попытка
Запустите npm, запустите подачу без дополнительной настройки
$ npm run serve
> [email protected] serve /Users/ne/projects/vue-demo
> vue-cli-service serve
INFO Starting development server...
Starting type checking service...
Using 1 worker with 2048MB memory limit
98% after emitting CopyPlugin
DONE Compiled successfully in 4294ms 3:21:35 PM
No type errors found
Version: typescript 3.5.3
Time: 4267ms
App running at:
- Local: http://localhost:20415/
- Network: http://192.168.178.192:20415/
Note that the development build is not optimized.
To create a production build, run npm run build.
Итак, сначала я проверил, запущено ли на этом порту другое приложение с lsof -i :8080
, но это не дало результатов.
Вторая попытка
Поэтому вторая попытка состояла в том, чтобы принудительно настроить порт через клиентскую систему с npm run serve -- --port 8080
, который все еще запускал приложение на случайном порту, но без ошибок в консоли браузера.
Третья попытка
Затем я попытался настроить приложение в vue.config.js
.
module.exports = {
devServer: {
open: process.platform === 'darwin',
host: 'localhost',
port: 8080, // CHANGE YOUR PORT HERE!
https: false,
hotOnly: false,
},
};
Что тоже не сработало и даже вызывает исключение в консоли браузера:
15:25:20.889 :8080/sockjs-node/info?t=1566048320873:1 Failed to load resource: net::ERR_CONNECTION_REFUSED
15:25:20.910 client?81da:172 [WDS] Disconnected!
close @ client?81da:172
15:25:21.982 :8080/sockjs-node/info?t=1566048321978:1 Failed to load resource: net::ERR_CONNECTION_REFUSED
15:25:23.079 :8080/sockjs-node/info?t=1566048323075:1 Failed to load resource: net::ERR_CONNECTION_REFUSED
15:25:25.097 :8080/sockjs-node/info?t=1566048325091:1 Failed to load resource: net::ERR_CONNECTION_REFUSED
15:25:29.151 VM14:1 GET http://localhost:8080/sockjs-node/info?t=1566048329145 net::ERR_CONNECTION_REFUSED
package.json
Я добавил package.json, так как я мог что-то здесь упустить.
{
"name": "frontend",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"test:unit": "vue-cli-service test:unit"
},
"dependencies": {
"core-js": "^2.6.5",
"vue": "^2.6.10",
"vue-class-component": "^7.0.2",
"vue-property-decorator": "^8.1.0",
"vue-router": "^3.0.3",
"vuex": "^3.0.1"
},
"devDependencies": {
"@types/jest": "^23.1.4",
"@vue/cli-plugin-babel": "^3.10.0",
"@vue/cli-plugin-eslint": "^3.10.0",
"@vue/cli-plugin-typescript": "^3.10.0",
"@vue/cli-plugin-unit-jest": "^3.10.0",
"@vue/cli-service": "^3.10.0",
"@vue/eslint-config-airbnb": "^4.0.0",
"@vue/eslint-config-typescript": "^4.0.0",
"@vue/test-utils": "1.0.0-beta.29",
"babel-core": "7.0.0-bridge.0",
"babel-eslint": "^10.0.1",
"eslint": "^5.16.0",
"eslint-plugin-vue": "^5.0.0",
"node-sass": "^4.9.0",
"sass-loader": "^7.1.0",
"ts-jest": "^23.0.0",
"typescript": "^3.4.3",
"vue-template-compiler": "^2.6.10"
}
}
Чего мне не хватает?
Ответы
Ответ 1
Примечание. Эта проблема характерна только для node-portfinder v1.0.22. Эта проблема была решена в v1.0.23, которая является повторной версией v1.0.21.
Это похоже на функцию в portfinder, которая использовала случайные последовательности для выделения доступного порта.
Попытка:
const portfinder = require('portfinder');
portfinder.basePort=8080
portfinder.getPortPromise().then((port) => { console.log(port) })
вернуть что-то вроде:
9567
Даже если порт 8080 доступен.
Поведение изменилось недавно в этом коммите. До того, как порт попробуйте увеличить от basePort до highport. Он поставляется с выпуском v1.0.22
Вариант 1: исправление ошибок
Чтобы использовать порт 8080, я пропатчил файл node_modules/@vue/cli-service/lib/commands/serve.js
, добавив строку 322 portfinder.highestPort = portfinder.basePort + 1
portfinder.basePort = args.port || process.env.PORT || projectDevServerOptions.port || defaults.port
portfinder.highestPort = portfinder.basePort + 1
const port = await portfinder.getPortPromise()
Я отправляю этот PR в vue-cli.
Вариант 2. Установите portfinder до изменения поведения
Другой способ обойти ожидание, когда portfinder/vue-cli выберет решение, - установить старый portfinder с помощью:
npm install [email protected]
Вариант 3: ожидание следующего выпуска портфиндера
Существует ожидающий запрос на извлечение, чтобы вернуть поведение по умолчанию к последовательному
https://github.com/http-party/node-portfinder/pull/86.
Ответ 2
Вы можете временно откатить портфиндер, поместив
"resolutions": {
"@vue/cli-service/portfinder": "1.0.21"
}
в своем файле package.json
и запустите yarn install
впоследствии.
Ответ 3
В большинстве случаев ошибка возникала, когда что-то работает на том же порту. Но, как вы упомянули выше, вы проверили его, и на нем ничего нет.
Пытались ли вы перезагрузить или завершить работу своей системы и снова запустить сервер, если не попробуете, какое-то время он работал для меня.
Во-вторых, будет полезно, если вы поделитесь объектом Scripts в package.json.
Я рассмотрел вашу проблему и обнаружил, что эта статья может помочь вам. Дайте мне знать, если ошибка все еще существует.