在父目录中使用javascript不起作用

时间:2016-01-06 07:44:40

标签: html node.js

我最近开始尝试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

1 个答案:

答案 0 :(得分:1)

在node_modules中,理论上你可以拥有一些应该从外面隐藏的重要模块,数据。如果公开所有node_modules目录,那么任何人都可以从那里访问所有文件。

但是我们只能公开angular目录(如果你需要你可以暴露更多的文件甚至是完整的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不提供静态文件。

  

应该是HTML

方面的另一个目录

没有。如果您已正确配置服务器,则无法从浏览器打开此服务器上的任何文件(这是严重的安全问题)。

如果您尚未在node.js服务器中配置“提供静态文件”但在某些目录中看到静态文件,则可能由apache或nginx服务器提供服务。您可以尝试更改其配置。

如果你没有表达纯粹的node.js,那么提供静态文件会更复杂,请看这个要点:https://gist.github.com/ryanflorence/701407