这是针对图书馆的,我不一定要打这个电话:
app.use('/node_modules', express.static('node_modules'));
我必须以不同的方式来做。因为我无法控制服务器如何提供静态资产。说我有这个结构:
project/
node_modules/
xxx/
asset.js
index.html
app.js
在app.js中,我有:
const express = require('express');
const app = express();
app.use('/docs', (req,res){
res.render(require.resolve('./node_modules/xxx/index.html'));
});
app.listen(3000);
问题在于,由于服务器是从当前根目录运行的,因此index.html文件将没有正确的路径来拾取asset.js文件。
例如,在index.html中,如果base设置如下:
<base href="/">
那是行不通的。我可以尝试使用:
<base href="node_modules/xxx/">
另一种解决方案是将所有内容捆绑在一起,以使index.html文件不需要对静态资产进行任何请求,但是我正在寻找一种很好的解决方案,以确保路径解析在某种程度上可以通用。例如,如果快递服务器不是在项目根目录中启动,而是在另一个子目录中启动。
答案 0 :(得分:1)
假设您的文件位于node_modules中,路径为“ ./node_modules/bootstrap/dist /”
您可以创建“ / file”之类的静态路由
您可以使用:
app.use('/file',express.static(__dirname+'/node_modules/bootstrap/dist/'));
包括这样的脚本:
<script src="/file/bootstrap.min.js"></script>