Jan*_*rek 9 node.js express typescript vue.js wsl-2
我有 Windows 10 和 Linux 子系统 (Ubuntu-20.04),并且我正在使用 WSL2。当我初始化前端项目(vue 项目)并运行npm run serve时,一切正常。正如我所期望的,该应用程序在 localhost:8080 上运行。但是当我为这个应用程序创建后端(使用nodejs、express的新项目)时,我启动了简单的服务器,并且在终端中看起来不错,但是当我想在浏览器中进入 localhost:5000 查看基本的 Hello World 时,页面正在加载一段时间然后说网页本地主机没有发送任何数据。
这是我的 app.ts
import express, { Application, Request, Response, NextFunction } from 'express'
import bodyParser from 'body-parser'
import cors from 'cors'
import 'reflect-metadata'
const app: Application = express()
const port = 5000
app.use(cors)
app.use(bodyParser.json({ limit: '20480kb' }))
app.get('/', (req, res) => {
res.send('Hello!')
})
const server = app.listen(port, 'localhost', () => console.log(`The server is running on port ${port}.`))
Run Code Online (Sandbox Code Playgroud)
这是我的 package.json 脚本(将 typescript 编译为 javascript 效果很好):
"scripts": {
"start": "nodemon dist/app.js",
"build": "rm -rf dist/ && tsc -w",
"commit": "npx git-cz"
}
Run Code Online (Sandbox Code Playgroud)
这是我的后端终端,这里一切正常:
https://i.stack.imgur.com/pJIb9.png
我尝试使用 netstat 查看连接:
https://i.stack.imgur.com/n5naM.png
我的问题是我无法通过网络浏览器访问服务器,请帮忙。
lsa*_*aga 10
如果您显式定义 PORT 有效,我在尝试在 WSL2 上运行基本节点 - Express 应用程序时也会遇到同样的问题。基本上是一个网络问题,因此定义端口和主机为我解决了这个问题。这是代码。
const express = require('express');
const app = express();
const PORT = 3000;
const HOST = '0.0.0.0';
app.get('/', (req, res) => res.send('hello world'));
app.listen(PORT, HOST, () => console.log('server running'));
Run Code Online (Sandbox Code Playgroud)
当我在浏览器上输入 localhost:3000 时,它就可以工作了。
由于某种原因,当我更新 docker 桌面时,此方法失败了。另一个有效的解决方案是在 Windows 中打开端口。在具有管理员权限的 powershell 中:
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=192.168.x.x
Run Code Online (Sandbox Code Playgroud)
在“connectaddress”中,您必须输入您的 IP (wsl2),您可以使用 ifconfig 获取该 IP
| 归档时间: |
|
| 查看次数: |
16682 次 |
| 最近记录: |