html中的外部javascript被错误地发送到服务器

External javascript in html is sent incorrectly to the server

本文关键字:服务器 错误 外部 javascript html      更新时间:2023-09-26

我正在运行一个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本身可能需要一些其他脚本或资源,这些脚本或资源也需要路由,这就是为什么在为其制定明确的路由后,它就不起作用了。你可能会检查控制台中的特定错误,以了解它不起作用的原因。

您可能还想阅读以下内容:如何包含位于node_modules文件夹中的脚本?