通常,您不希望向外部世界公开任何关于服务器结构的内部路径。你所能做的就是在服务器中创建一个/scripts静态路由,从文件所在的目录中获取文件。如果你的文件在"。/node_modules/bootstrap/dist/"目录下。然后,页面中的script标签看起来就像这样:
<script src="/scripts/bootstrap.min.js"></script>
如果你在nodejs中使用express,静态路由就像这样简单:
app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));
然后,任何来自/scripts/xxx.js的浏览器请求都会自动从dist目录__dirname + /node_modules/bootstrap/dist/xxx.js中获取。
Note: Newer versions of NPM put more things at the top level, not nested so deep so if you are using a newer version of NPM, then the path names will be different than indicated in the OP's question and in the current answer. But, the concept is still the same. You find out where the files are physically located on your server drive and you make an app.use() with express.static() to make a pseudo-path to those files so you aren't exposing the actual server file system organization to the client.
如果你不想创建这样的静态路由,那么你最好将公共脚本复制到你的web服务器将其视为/scripts或任何你想使用的顶级名称的路径。通常,您可以将此复制作为构建/部署过程的一部分。
如果你想在一个目录中只公开一个特定的文件,而不是在该目录中找到的所有文件,那么你可以手动为每个文件创建单独的路由,而不是使用express.static(),例如:
<script src="/bootstrap.min.js"></script>
还有为它创建路径的代码
app.get('/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});
或者,如果你仍然想用/scripts描述脚本的路由,你可以这样做:
<script src="/scripts/bootstrap.min.js"></script>
还有为它创建路径的代码
app.get('/scripts/bootstrap.min.js', function(req, res) {
res.sendFile(__dirname + '/node_modules/bootstrap/dist/bootstrap.min.js');
});