Can';无法从express/npm模块中找到静态资产 太长,读不下去了

Can';无法从express/npm模块中找到静态资产 太长,读不下去了,express,Express,我的项目是一个由ExpressJS服务器使用的NPM模块。服务器需要指定一个端点,我的模块将完成其余的工作。如何让模块加载正确的html页面并从正确的路径获取正确的js/css文件 问题 我遇到了一个问题,我可以使用库查看站点的目录结构,并且所有文件都在正确的目录中,但是由于某种原因,当我尝试加载任何文件时,无论是从serveIndex视图还是从它应该加载的实际端点,我只会得到404个错误 下面是一个例子,如果有人想从他们的项目中使用这个NPM模块 app.js(他们的服务器) 这是我的项目结构

我的项目是一个由ExpressJS服务器使用的NPM模块。服务器需要指定一个端点,我的模块将完成其余的工作。如何让模块加载正确的html页面并从正确的路径获取正确的js/css文件

问题 我遇到了一个问题,我可以使用库查看站点的目录结构,并且所有文件都在正确的目录中,但是由于某种原因,当我尝试加载任何文件时,无论是从
serveIndex
视图还是从它应该加载的实际端点,我只会得到404个错误

下面是一个例子,如果有人想从他们的项目中使用这个NPM模块

app.js(他们的服务器) 这是我的项目结构建成后的图像

从返回
/express admin area/build/src
console.log(uuu dirname)
,我使用上面代码中实际服务器传递的
express
引用,告诉我的模块使用

... import libraries etc ...

const adminAreaConfig = express => {
  const adminArea = express.Router()

  adminArea.use('/', express.static(__dirname + '/views')  // sets my modules views to the "http://localhost:3000/admin" path
  adminArea.use('/dirs', serveIndex(__dirname))  // will get into this later

... some other stuff like exports etc ...
然后尝试将
index.html
文件加载到
express admin area/build/src/views
目录中,但失败,因为它无法在
express admin area/build/src/views/static/CSS
中找到CSS和JS文件

首先,我知道它失败了,因为它没有寻找
http://localhost:3000/admin/static/css/styles.css
它查找
http://localhost:3000/static/css/styles.css
,所以这是我需要完全解决的另一个问题

其次,回顾上面的小代码示例,
adminArea.use('/dirs',serveIndex(\uu dirname))
,我正在使用
serveIndex
库来尝试查看目录结构。如果我转到
http://localhost:3000/admin/dirs
我在浏览器中获得了正确的目录和文件

但是现在,如果我试图查看一个实际的文件,我会遇到错误
无法获取/admin/dir/main.js
,例如,如果我要转到
http://localhost:3000/admin/dir/main.js
,但如果需要,我可以继续深入目录,例如图像中的
控制器
路由
目录

我想要什么
我需要一种方法来加载这些静态资产。如果我用一个简单的
Hello,World然后这就是我得到的,但是尝试加载任何外部脚本/样式表是在我得到404错误并且没有加载任何内容时。

我将回答我自己的问题

解决方案其实相当简单。具体而言,该模块的视图层由React、CRA处理。CRA将寻找一些特定的环境变量,其中一个是
PUBLIC\u URL
。我所要做的就是

  • 在我的CRA的根目录中创建一个
    .env
    文件
  • 添加
    PUBLIC\u URL=“/admin”

之后,它只是重建项目,
warn build
,然后重置服务器。CRA随后将查看
http://localhost:3000/admin/static/...
而不是
http://localhost:3000/static/...
用于静态资产。

视图
文件夹外创建一个
静态
文件夹。我回答了一个类似的问题。
... import libraries etc ...

const adminAreaConfig = express => {
  const adminArea = express.Router()

  adminArea.use('/', express.static(__dirname + '/views')  // sets my modules views to the "http://localhost:3000/admin" path
  adminArea.use('/dirs', serveIndex(__dirname))  // will get into this later

... some other stuff like exports etc ...