【问题标题】:External javascript in html is sent incorrectly to the serverhtml 中的外部 javascript 被错误地发送到服务器
【发布时间】:2016-07-24 22:20:16
【问题描述】:

我正在运行一个 Node.js 服务器和一个 Angular 前端。我正在使用的 Angular 依赖项之一需要我将一个名为 swing.js 的 javascript 文件导入到我的 html 页面中。但是,当我尝试这样做时,它会将所需文件作为 http 请求发送到服务器,从而产生如下所示的请求:

http://localhost:3000/home/me/app/node_modules/angular-swing/dist/swing.js

显然,这是 404。作为替代方案,我尝试过更改

<script src="/home/me/app/node_modules/angular-swing/dist/swing.js"></script>

进入

<script src="swing.js"></script>

然后在服务器端,做:

app.get('swing.js', function(req, res){
    res.sendFile('home/me/app/node_modules/angular-swing/dist/swing.js');
});

这有点作用,但是文件不能正常运行,因为我假设它不再在它需要的 npm 环境中。我尝试了多次迭代的更改

<script src="/home/me/app/node_modules/angular-swing/dist/swing.js"></script>

使用句点 (.) 来表示更多相对路径,但这似乎也不起作用。总的来说,我很困惑,并希望有任何见解。如果有什么用,我也在用:

app.use(express.static(__dirname+'/public'));

【问题讨论】:

  • node.js 默认情况下不提供任何文件,因此您需要根据请求从服务器发送到客户端的任何脚本文件都需要明确的路由来处理它们,或者它们需要一些知道如何处理的通用路由处理所有请求的脚本文件。客户端中的swing.js 不属于任何“NPM 环境”。那时它正在运行浏览器,而不是在任何 NPM 环境中。 swing.js 本身可能需要一些其他脚本或资源,这些脚本或资源也需要路由,这就是为什么在为它创建显式路由后它不起作用的原因。
  • @jfriend00 感谢您的澄清。除了最终需要清理我的路线之外,我的问题还在于脚本的位置,它出现在它的依赖项之一之前。

标签: javascript java angularjs node.js


【解决方案1】:

让我的 cmets 成为答案...

node.js 默认情况下不提供任何文件,因此您需要根据请求从服务器发送到客户端的任何脚本文件都需要一个显式路由来处理它们,或者它们需要一些知道如何处理所有请求的通用路由脚本文件。

客户端中的swing.js 不属于任何“NPM 环境”。那时它正在运行浏览器,而不是在任何 NPM 环境中。 swing.js 本身可能需要一些其他脚本或资源,这些脚本或资源也需要路由,这就是为什么在为它创建显式路由后它不起作用的原因。您可能可以检查控制台中的特定错误,以了解它为什么不起作用。

您可能还想阅读以下内容:How to include scripts located inside the node_modules folder?

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2014-10-03
    • 2015-11-23
    • 2012-08-02
    相关资源
    最近更新 更多