我最近开始尝试 angularjs,当我将 index.html 和 angular.min.js 放在同一目录中时,我的网站工作正常:
<!--at the end of the <body> of index.html-->
<script src="angular.min.js"></script>
但是,我已经在 ../node_modules/angular/angular.min.js
我想改用这个脚本:
<script src="../node_modules/angular/angular.min.js"></script>
这根本行不通。
我还尝试将其移动到子目录,例如
<script src="node/angular.min.js"></script>
这有效。因此,问题实际上是为什么我无法从父目录加载脚本?
仅供引用,我的树看起来像:
project/
node_modules/
angular/
angular.min.js
app1/
index.html
最佳答案
在node_modules中,理论上你可以拥有一些重要的模块、数据,这些模块、数据应该对外部隐藏。如果您公开所有 node_modules 目录,那么任何人都可以从那里访问您的所有文件。
但是我们只能公开角度目录(如果需要,您可以公开更多文件甚至完整的node_modules,但这不是最好的主意)。在您的服务器文件中添加:
app.use('/angular', express.static(__dirname + '/node_modules/angular/'));
现在你在前端你可以得到角度:
<script src="angular/angular.min.js"></script>
编辑: 仅当您在node.js中使用express时,这才有效(如果是,请在您的问题中添加express标签)
Edit2(回答来自comemnt的OP问题): Node.js 服务器和 Express 默认情况下不提供静态文件。
should just be another directory in terms of HTML
没有。如果您正确配置了服务器,则无法从浏览器打开该服务器上的任何文件(这是严重的安全问题)。
如果您尚未在 Node.js 服务器中配置“提供静态文件”,但在某些目录中看到静态文件,那么您可能是通过 apache 或 nginx 服务器来提供它们的。您可以尝试更改其配置。
如果你没有express only纯node.js,那么提供静态文件会更复杂,请看看这个要点:https://gist.github.com/ryanflorence/701407
关于html - 在父目录中使用 javascript 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34627981/