NodeJS Express应用程序不提供生产服务器上的静态文件

vbopmzt1  于 2022-12-26  发布在  Node.js
关注(0)|答案(2)|浏览(149)

我正在使用Express构建一个简单的(至少从后端的Angular 来看)单页应用程序。这个应用程序在本地运行得非常好,但是在部署之后,我的静态文件就不工作了。我四处查看了一下,我相信我正确地使用了express.static()。另一件需要注意的事情是,我已经在GoDaddy上部署了它。不确定这是否会导致任何问题,但可能是相关的信息。
这里有一个链接到我的托管网站,随时检查自己:http://senseless.world/
我的app.js文件中的相关代码如下(我已经排除了一些不相关的部分):

const express = require('express');
const app = express();
const path = require('path');
const router = express.Router();

app.use('/static', express.static(__dirname+'/static'));
router.get('/',function(req,res){
  res.render(path.join(__dirname+'/static/index.ejs'), {routeStr: ''});
});
app.use('/', router);
app.listen(process.env.port || 3000);

下面是我在index.ejs文件中加载静态文件的方法:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Senseless World</title>
    <link rel="stylesheet" href="static/styles/main.css?version=8" type="text/css">
    <link rel="stylesheet" href="/static/styles/mobile-styles.css?version=3" type="text/css">
    <script src="/static/scripts/vendors/jquery-3.5.0.min.js"></script>
    <script src="/static/scripts/vendors/p5.min.js"></script>
    <script src="/static/scripts/vendors/p5.sound.js"></script>
    <script src="/static/scripts/bundle.js" type="module"></script>
    <script src="/static/scripts/modal-page-open.js?version=5"></script>
    <script src="/static/scripts/flashlight.js?version=3"></script>
    <link rel="icon" href="/static/senseless-favicon-16.png" type="image/png" sizes="16x16">
    <link rel="icon" href="/static/senseless-favicon-32.png" type="image/png" sizes="32x32">
  </head>
...

我在控制台中看到的错误如下:

下面是我从网络控制台看到的情况:

解决了:
我的. htaccess中需要这个

RewriteEngine On
DirectoryIndex disabled
RewriteRule ^$ http://127.0.0.1:3000/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L]
kxeu7u2r

kxeu7u2r1#

您可以遵循此代码

const express = require('express');
const app = express();
const path = require('path');
const router = express.Router();

// At first create public folder and move all ejs file in public folder
app.use('/static', express.static(__dirname+'/static'));
router.get('/',function(req,res){
  res.render(path.join(index.ejs);
});
app.use('/', router);
app.listen(process.env.port || 3000);
lnlaulya

lnlaulya2#

如果你在Digitalocean的vp服务器上使用Nginx,编辑你的Nginx配置文件。
执行下列指令:
1.第一个月
1.删除或注解掉try_files $uri $uri/ =404;
1.关闭编辑器并用sudo nginx -t测试你的nginx配置
1.如果测试成功,重启nginx:sudo service nginx restart
就这样。再次检查你的应用。

相关问题