当前位置: 首页 > 知识库问答 >
问题:

react build assets express静态文件夹不服务错误es6

薛云瀚
2023-03-14

嗨,我正试图从我的静态文件夹中的express服务react build资产,它使用CommonJS语法工作。现在,我将ES6语法与express一起使用,它不为其他文件服务,但它为index.html文件服务:

GET /?session_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImI4Y2QxNTA0LTg3YmEtNGMzMC04ZmI3LWFhZDFkZWQ0ZmFkNCIsImlhdCI6MTYwNjczODExMiwiZXhwIjoxNjA2NzQxNzEyfQ.m4Lf5mimxD_8r14bT_Npg2Ql_ZkiJrFoy6mDfdkx2Sw 200 15.099 ms - 3011
GET /static/css/main.3dccf1f1.chunk.css 404 3.406 ms - 173
GET /static/js/2.0216aaa2.chunk.js 404 1.833 ms - 168
GET /static/js/main.71c89386.chunk.js 404 17.247 ms - 171
GET /manifest.json 404 0.543 ms - 152

这是我在app.js中的代码

import express from 'express';
import session from 'express-session';
import dotenv from 'dotenv';
import morgan from 'morgan';
import path from 'path';
import {socketListen,socketIO} from './socket/init.js';

dotenv.config({path: './config/config.env'});

import authController from './controllers/authController.js';


const app = express();

app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: process.env.SECRET_KEY,
    cookie: {secure: true}
}));
app.use(morgan('dev'));
//app.use(express.static(path.join(path.dirname(new URL(import.meta.url).pathname),'public')));
app.use(express.static((path.dirname(new URL(import.meta.url).pathname) + '/public')));
app.use('/api/v1/auth',authController);


const port = process.env.PORT || 5000;

app.get(['/','/nw','/nw/*'],(req,res) => {
    //res.sendFile(path.join(path.dirname(new URL(import.meta.url).pathname),'public','index.html'));
    res.sendFile('index.html',{root: 'public'});
});

socketListen(4000);

socketIO.on('connect',async() => {
    console.log('crypto client connected');
});

socketIO.on('event',async() => {

});

socketIO.on('disconnect',async() => {
    console.log('crypto client disconnected');
});


app.listen(port, () => console.log(`server is running on port ${port}`));
nano_wall
 - app.js
 - /public
     - /static
     - /assets
     - index.html
     - asset-manifest.json
     - manifest.json
     - favicon.ico

我已经使用path.join和path.dirname(新的URL(import.meta.URL).pathname)替换了ES6的__dirname,虽然import.meta.URL代码替换了__dirname,但它似乎没有用express.static()正确注册,所以我使用了{root:'public'}配置选项。

共有1个答案

左宁
2023-03-14

所以我用express.static玩了一会儿,看了一下serve-static index.d.ts文件,我发现有一个dotfiles配置选项,您可以在这里决定如何在文件路径的前面处理./,但我只是使用了'public',它似乎显示得很正确。

 类似资料:
  • 我们先来看看最简单的本地静态文件服务配置示例: server { listen 80; server_name www.test.com; charset utf-8; root /data/www.test.com; index index.html index.htm; } 就这些?

  • 我试着设置nginx来服务我的node.js应用程序静态文件。问题是,当我试图得到我的文件时,我的状态是403禁止的。 当我尝试下载一个文件从 /root/appJs/public/css/style.css我写http://sitename.com/css/style.css我retive 403禁忌状态。我已经在一些论坛上寻找解决方案,但没有

  • 在根目录下新建文件夹叫static。代码可以通过/static/来引入相关的静态资源。 export default () => <img src="/static/my-image.png" alt="my image" /> _注意:不要自定义静态文件夹的名字,只能叫static ,因为只有这个名字 Next.js 才会把它当作静态资源。

  • 问题内容: 基本上,我为客户制作了一个(相对)简单的应用程序。该应用程序正常工作,但他们一直在要求更改数据。 鉴于该应用程序最初的预期简单性以及它保存静态数据的事实,我没有将其链接到任何后端。该数据将保存在本地静态文件中,而该对象具有保存数据的对象。 问题在于,fle被捆绑到了buld中,因此,如果我只想更改一些静态数据而不必进行rbuild,我不会! 我的数据文件可以在公用文件夹中访问,并且可以

  • 问题内容: 我的要求是,我应该通过一个安静的服务将10MB的zip文件发送给客户端。我在论坛中找到了发送对象是更好的方法的代码,但是如何在以下代码中创建对象: 问题答案: 它是下载文件的更好方法和简便方法。 对于您所要求的代码:

  • 我从Apache切换到Nginx,使用apache,皮肤文件夹中的所有静态文件(图像、css、javascript)都直接由Apache提供服务。 示例: 我读了一些关于Nginx和Plone的文档,但我没有看到。下面是Plone.orgconf的例子:https://github.com/plone/plone-org-nginx/blob/master/nginx.conf 所以,我的问题是: