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

标签 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

最佳答案

在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/

相关文章:

javascript - 如何让一个容器填充另一个容器留下的空间?

jquery - 当底部div消失时将顶部div拉到底部

javascript - 使用 JQuery 动态更改 AwesomeIcon 的类

php - 如何修复此下拉菜单?

node.js - 运行 'ionic capacitor build android' 和 npm install 时出错

node.js - 修改现有Excel文件而不改变原始格式和链接

node.js - 错误 : Forever detected script exited with code: 1

javascript - 获取div中select的值

javascript - Gulp - 导致任务停止的错误

javascript - 如何根据用户在 node.js 中的输入创建我的 mongodb 查询?