使用Node.js搭建HTTP Hello World服务访问时显示源码是什么原因
问题原因及解决方法
- 最常见的原因:你没有启动Node.js服务,直接在浏览器中打开了本地的
app.js文件。此时浏览器地址栏显示的是file://开头的本地文件路径,而非http://127.0.0.1:3000,浏览器会直接将JS文件的纯文本内容渲染出来。
解决方法:打开服务器的终端,进入app.js所在的目录,执行命令node app.js,看到终端输出Server running at http://127.0.0.1:3000/的提示后,再在浏览器地址栏输入http://127.0.0.1:3000访问即可。 - 你部署了Nginx、Apache等Web服务,直接将
app.js所在目录作为静态资源目录托管,访问时Web服务直接将JS文件作为静态资源返回,没有将请求转发到Node.js监听的3000端口。
解决方法:如果需要通过Web服务代理访问Node服务,需要添加反向代理配置,将对应域名/路径的请求转发到http://127.0.0.1:3000;也可以直接访问Node服务监听的3000端口获取内容。 - Node服务启动失败,你误以为服务已正常运行,访问到的依然是静态托管的源码文件。
解决方法:执行node app.js后检查终端是否有报错提示,常见的报错包括3000端口被其他程序占用、文件读写权限不足等,根据报错信息处理后重新启动服务即可。 - 如果你是从服务器之外的设备访问服务器的公网地址,代码中绑定的
hostname = '127.0.0.1'只允许服务器本地访问服务,外部访问会触发连接失败。该问题不会返回源码内容,仅作额外提醒:如果需要外部访问,可以将hostname修改为0.0.0.0,同时开放服务器防火墙的3000端口访问权限。
内容的提问来源于stack exchange,提问作者JKHeydt
相关产品推荐
相关产品推荐

