我刚刚将我的网站部署到我的 AWS 托管的 Windows Server 2022 数据中心:http://www.planetshah.com/pwv ...由于某种原因,它在链接到 javascript 时遇到问题:
线路...
<script src="./logic.js"></script>
...抛出错误:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
。
我在本地开发时效果很好。
这是服务器上文件结构的屏幕截图:
index.html(主要 html 文件)加载正常,但位于同一目录中的logic.js(主要 javascript 文件)无法加载。
我的服务器使用 node.js 路由应用程序路由流量,该应用程序使用 bouncy:
bouncy(function(req, bounce) {
const host = req.headers.host;
console.log(`host=${host}`);
if (host === 'planetshah.com' || host === 'www.planetshah.com') {
if (req.url.includes('/music%20mixes/')) bounce(8002);
else if (req.url.includes('/pwv')) bounce(8004);
else bounce(8000);
}
if (host === 'assertivesolutions.ca' || host === 'www.assertivesolutions.ca') {
console.log('bouncing to 8001');
bounce(8001);
}
if (host === 'fmshahdesign.com' || host === 'www.fmshahdesign.com') {
console.log('bouncing to 8003');
bounce(8003);
}
}).listen(80);
...
const pwvApp = express();
pwvApp
.use(express.static(path.join(__dirname, 'planetshah.com\\pwv')))
.listen(8004);
pwvApp.get('/*', function(req, res) {
res.sendFile(path.join(__dirname, 'planetshah.com\\pwv\\index.html'), function(err) {
if (err) {
res.status(500).send(err);
}
});
});
console.log('pwvApp listening on port 8004');
如您所见,它会查看主机(来自
req.headers.host
)以查看它是否包含 planetshah.com/pwv
。如果是,则将请求退回到端口 8004。进一步,使用express 创建 pwvApp 应用程序并侦听端口 8004。
这似乎工作正常,因为我可以看到我的 pwv 应用程序的登录屏幕。但它无法加载 javascript。
我想知道是否必须像返回index.html 一样返回javascript 文件。也就是说,调用
res.sendFile(...)
。如果是这样,我是否必须对我的应用程序使用的每个文件执行此操作?如果是这样,一定有更好的办法。或者也许这不是问题。我有疑问,因为 css 文件似乎加载得很好。但问题是什么呢?
任何帮助将非常感激。
删除 URL 字符串开头的 ./。
我不久前从事过一个类似的项目,当我们开始将文件放入文件夹中时,整个 CSS 和 js 链接都崩溃了,因为我们使用了软链接。
./ 表示转义当前文件夹 pwv 并进入planetshah.com 文件夹,并查找logic.js。
所以只需将其更改为普通旧的
"logic.js"
,它应该可以工作