获取javascript时Node.js HTML页面错误404

Posted

技术标签:

【中文标题】获取javascript时Node.js HTML页面错误404【英文标题】:Node.js HTML page error 404 while getting javascript 【发布时间】:2017-03-28 11:47:16 【问题描述】:

我正在使用 node.js,我希望我的 html 文件能够获取 javascript 文件。

这是我使用 node.js 运行的名为 server.js 的文件:

var app = require('express')();
var http = require('http').Server(app);

app.get('/', function(req, res)
  res.sendFile(__dirname + '/index.html');
);

http.listen(3000, function()
  console.log('listening on *:3000');
);

非常简单的代码用于托管index.html。这个 HTML 文件有一些脚本标签:

<script type="text/javascript" src="./A.js"></script>

<script type="text/javascript" src="./B.js"></script>

<script type="text/javascript" src="./C.js"></script>

问题是,当我运行 server.js 并转到浏览器时,我在控制台上收到此错误:

GET http://localhost:3000/A.js 
GET http://localhost:3000/B.js 
GET http://localhost:3000/C.js 404 (Not Found)

404 error not found

文件都在同一个目录中,我不明白为什么它没有得到脚本。

【问题讨论】:

【参考方案1】:

您的server.js 不知道如何处理除了对根页面的请求之外的任何事情。 (即使http://localhost:3000/index.html 也会失败并返回 404。)

添加express.static middleware 以提供目录中的文件:

var express = require('express');
var app = express();
var http = require('http').Server(app);

express.static('public')

app.get('/', function(req, res)
  res.sendFile(__dirname + '/index.html');
);

http.listen(3000, function()
  console.log('listening on *:3000');
);

现在public 文件夹中的所有文件都将按照您的意愿提供。 (将您的 *.js 文件移动到名为 public 的子文件夹中)

请参阅HyperDev default project template,了解一个很好的互动示例。

【讨论】:

是的,谢谢 :) 您输入的代码中唯一缺少的是声明一个 var express = require('express') 然后 app = express() @NunoMiguelSilva: 啊.. 修好了~【参考方案2】:

尝试查看Express1 提供静态文件的文档。

您正在使用这些行来提供您的索引文件:

app.get('/', function(req, res)
   res.sendFile(__dirname + '/index.html');
);

您可以使用相同的方式提供 js 文件,也可以将它们放入 public 文件夹并添加 app.use(express.static('public'))

然后您可以将它们引用为public/A.js

【讨论】:

在服务器上,该文件将是public/A.js,但它应该在HTML中引用为./A.js

以上是关于获取javascript时Node.js HTML页面错误404的主要内容,如果未能解决你的问题,请参考以下文章

从javascript获取和从node.js获取节点,有啥区别[关闭]

Node.js 入门:就是运行在服务端的 JavaScript

用 node.js/javascript 连接 PHP

node.js

使用 JavaScript/Node.js 从 IP 地址获取两个字母的大陆代码

Solana - 如何从 JavaScript / Node.js 中的本地密钥对获取帐户?