![](/img/trans.png)
[英]Copying node_modules or bower_components to static/public directory in web app
[英]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.