You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在DigitalOcean部署网站时JavaScript文件加载失败问题求助

问题分析与解决方案

核心问题

你的服务器仅在80端口运行HTTP服务,但页面中的静态资源请求被强制使用了HTTPS协议,而服务器未配置HTTPS(无SSL证书、未监听443端口),导致浏览器发起HTTPS请求时被拒绝连接。Postman用HTTP能正常获取文件也验证了这一点。

解决方案

方案1:修正静态资源引用路径(最快解决)

检查你的EJS模板文件,把硬编码的HTTPS资源链接改成相对路径或明确使用HTTP协议:

  • 错误写法:
    <script src="https://46.101.145.210/javascripts/cookieHandler.js"></script>
    
  • 正确写法(推荐相对根路径,自动适配当前页面协议):
    <script src="/javascripts/cookieHandler.js"></script>
    
  • 或者明确指定HTTP协议:
    <script src="http://46.101.145.210/javascripts/cookieHandler.js"></script>
    

方案2:为Express配置HTTPS服务(适合直接在Express层处理)

如果业务需要HTTPS访问,需先获取SSL证书(比如用Let's Encrypt免费证书),然后修改Express代码监听443端口:

const express = require("express");
const https = require("https");
const fs = require("fs");
const app = express();

// 读取SSL证书文件(替换为你的证书实际路径)
const options = {
  key: fs.readFileSync("/path/to/private-key.pem"),
  cert: fs.readFileSync("/path/to/certificate.pem")
};

app.use(express.static('public'));
// 其他中间件、路由配置保持不变...

// 启动HTTPS服务器,监听443端口
https.createServer(options, app).listen(443, () => {
  console.log("HTTPS server running on port 443");
});

// 可选:将80端口的HTTP请求重定向到HTTPS
app.listen(80, () => {
  app.use((req, res) => {
    res.redirect(`https://${req.headers.host}${req.url}`);
  });
});

方案3:用Nginx做反向代理(生产环境推荐)

生产环境更建议用Nginx处理HTTPS,把请求转发到内部的Express服务:

  1. 安装Nginx并配置好SSL证书
  2. 修改Nginx配置文件(示例路径:/etc/nginx/sites-available/your-app):
server {
    listen 80;
    server_name 46.101.145.210;
    # 将HTTP请求重定向到HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name 46.101.145.210;

    ssl_certificate /path/to/certificate.pem;
    ssl_certificate_key /path/to/private-key.pem;

    location / {
        # 转发请求到Express的80端口(或你指定的内部端口)
        proxy_pass http://localhost:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
  1. 重启Nginx服务:sudo systemctl restart nginx

额外排查点

  • 确认EJS模板中没有全局强制HTTPS的配置(比如<base>标签设置了https://前缀)
  • 检查浏览器缓存,清空旧的HTTPS资源引用后重新访问

内容的提问来源于stack exchange,提问作者abstract_func

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:45:33