繁体   English   中英

在express中将public声明为static后,如何从node_modules中添加静态文件?

[英]How to add static file from `node_modules` after declare the `public` as static in express?

在我的express应用中,我保持以下配置:

var express = require("express");
var path = require("path");
var jsonServer = require("json-server");
var app = express( );

app.use(express.static('public'));

app.get("/", function( req, res ) {
    res.sendFile( express.static(  path.join(__dirname, "/public/index.html" ) ) );
});

app.use('/api', jsonServer.router('./db.json'));

app.listen( 3000 );

所有这些都很好。 问题是,我无法从node_modules添加jquery 这是我的HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Promise Defined</title>
    <script src="node_modules/jquery/dist/jquery.js" type="text/javascript"></script> //not working sibling folder of public
    <link rel="stylesheet" href="styles/app.css"> //works fine. inside public folder
</head>
<body>
    <h1>New Title</h1>
</body>
</html>

解决此问题的正确方法是什么? 或如何处理这种情况? 提前致谢。

默认情况下,node.js不提供任何文件(与某些其他Web服务器不同)。 因此,如果要使node_modules/jquery/dist/jquery.js工作,则必须确保您的express.static()代码行将包含该文件,或者必须为该文件定义一个路由。 另外,有时使用不带前导/的相对路径也是很危险的,因为这会使它相对于页面的路径,这通常是不必要的,并且如果要在同一页面上的许多不同页面中提供相同的文件,可能会使事情变得困难。您的网站。

例如,您可以在网页中执行此操作:

<script src="/jquery.js" type="text/javascript"></script>

和这个:

app.get("/jquery.js", function(req, res) {
    res.sendFile(path.join(__dirname, "node_modules/jquery/dist/jquery.js"));
});

就个人而言,我可能会将jquery.js移到服务器上的public / scripts目录中,所以我不会在node_modules目录中提供任何服务,因此我所有公共服务的文件都集中在一个地方,因此完全可以提供服务给客户,什么不能给客户,所以我可以设计一个或两个express.static()语句来服务我所有的公共文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM