vue.js

vue.js - Vue npm run serve comienza en un puerto aleatorio



(3)

La mayoría de las veces el error ocurrió cuando algo se está ejecutando en el mismo puerto. Pero como mencionó anteriormente, lo ha verificado y no hay nada en él.

¿Has intentado reiniciar o apagar tu sistema y volver a ejecutar el servidor? Si no lo intentas, a veces me ha funcionado.

En segundo lugar, sería una ayuda completa si comparte el objeto de Scripts en package.json.

He revisado su problema y descubrí que este article puede ser útil. Avísame si el error aún existe.

Estoy tratando de ejecutar Vue en el puerto 8080, pero no puedo hacer que eso funcione. Acabo de crear un nuevo proyecto con vue create . y lo ejecutó con npm run serve , que inicia la aplicación en un puerto aleatorio.

Primer intento

Ejecute npm run serve sin ninguna configuración adicional

$ 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.

Así que primero verifiqué si otra aplicación se está ejecutando en ese puerto con lsof -i :8080 pero eso no dio resultados.

Segundo intento

Entonces, el segundo intento fue forzar el puerto a través del cli con npm run serve -- --port 8080 , que todavía inició la aplicación en un puerto aleatorio, pero no hubo errores en la consola del navegador.

Tercer intento

Luego intenté configurar la aplicación en vue.config.js .

module.exports = { devServer: { open: process.platform === ''darwin'', host: ''localhost'', port: 8080, // CHANGE YOUR PORT HERE! https: false, hotOnly: false, }, };

Lo que tampoco funcionó e incluso arroja una excepción en la consola del navegador:

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

Agregué package.json, ya que podría estar perdiendo algo aquí.

{ "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" } }

¿Qué me estoy perdiendo?


Puede revertir temporalmente el portfinder colocando

"resolutions": { "@vue/cli-service/portfinder": "1.0.21" }

en su archivo package.json y ejecute yarn install luego.


Nota: Este problema es específico de node-portfinder github.com/http-party/node-portfinder/releases/tag/v1.0.22 . Se resolvió en v1.0.23 que es una nueva versión de v1.0.21.

Esto parece una característica en el buscador de puertos que utilizó series aleatorias para asignar un puerto disponible.

Molesto:

const portfinder = require(''portfinder''); portfinder.basePort=8080 portfinder.getPortPromise().then((port) => { console.log(port) })

devolver algo como:

9567

Incluso si el puerto 8080 está disponible.

El comportamiento cambió recientemente en este commit . Antes de que el puerto intentara aumentar de puerto base a puerto más alto. Viene con el lanzamiento github.com/http-party/node-portfinder/releases/tag/v1.0.22

Opción 1: parches

Para usar el puerto 8080, parcheé el archivo node_modules/@vue/cli-service/lib/commands/serve.js agregando la línea 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()

Presento este PR a vue-cli.

Opción 2: Instalar portfinder antes del cambio de comportamiento

Otra forma de solucionar el problema de esperar a que portfinder / vue-cli elija una solución es instalar el viejo portfinder con:

npm install [email protected]

Opción 3: esperando el próximo lanzamiento del portfinder

Hay una solicitud de extracción pendiente para revertir el comportamiento predeterminado a https://github.com/http-party/node-portfinder/pull/86 secuencial.