gpt4 book ai didi

javascript - Node.js 应用程序在本地正常工作,但在 Droplet Ubuntu 上出现 404 错误

转载 作者:行者123 更新时间:2023-12-04 18:48:06 26 4
gpt4 key购买 nike

使用 digital ocean 水滴,Ubuntu终端。我已经运行了 npm run build、npm install。我正在使用 Vue.js 并从他们的文档中安装了“快速启动”项目:https://vuejs.org/guide/quick-start.html#without-build-tools
使用 Node app.js 调用 ->

    var express = require('express')
var bodyParser = require('body-parser')
const path = __dirname + '/dist/';
var app = express();
var port = 3000;

var fs = require('fs');
var files = fs.readdirSync(path+"/assets/");
console.log(typeof files);
console.log(JSON.stringify(files));

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(express.static(path));


app.get("/",function(req,res) {
console.log("Request for /home")
res.sendFile(path+"index.html");
});

//Using files variable made at the top to get Vue build files directory
for (var i=0;i<files.length;i++) {
app.get(files[i],function(req,res) {
console.log("Request for an asset")
res.sendFile(path+"/assets/"+files[i]);
});
}

app.listen(port,function() {
console.log("Server started on port:"+port);
});
index.html(在 Droplet 上正确加载并在本地正确加载)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite App</title>
<script type="module" crossorigin src="/assets/index.8ad48088.js"></script>
<link rel="modulepreload" href="/assets/vendor.5c83c58f.js">
<link rel="stylesheet" href="/assets/index.f3fa6de6.css">
</head>
<body>
<div id="app"></div>

</body>
</html>
在本地,网站有效。然后,在访问站点时在液滴上:
404 errors
编辑:我也尝试过使用 root 用户而不是 nodejs 用户( digital ocean 推荐使用 nodejs 用户来启动 pm2),看看它是否可能是权限问题。我对 Ubuntu 还很陌生,更不用说终端了
解决方案:nginx 需要正确的目录才能让我的网站 Assets 为它们提供服务。在/etc/nginx/sites-available 下编辑,然后是 nano 默认值。从那里在服务器对象下编辑:
server_name hellonode;

location ^~ /ResposDevelopment/NodeJS\ Server/Respos\ Vue/dist/ {
gzip_static on;
expires 12h;
add_header Cache-Control public;
~ =/var/www/html
- 将位置从 ~/assets/更改为上述解决了我的问题。

最佳答案

解决方案:nginx 需要正确的目录才能让我的网站 Assets 为它们提供服务。在/etc/nginx/sites-available 下编辑,然后是 nano 默认值。从那里在服务器对象下编辑:
server_name hellonode;

location ^~ /ResposDevelopment/NodeJS\ Server/Respos\ Vue/dist/ {
gzip_static on;
expires 12h;
add_header Cache-Control public;
~ =/var/www/html -Changed location from ~/assets/to above解决了我的问题。

关于javascript - Node.js 应用程序在本地正常工作,但在 Droplet Ubuntu 上出现 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71359234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com