javascript - 从节点服务器访问 js 时出错
问题描述
我是nodejs的新手,请原谅。我创建了一个节点 js 服务器应用程序,并使用 expressjs 提供了 html,如下所示
app.use(express.static( 'public/js'));
app.use(express.static( 'public/css'));
app.use(express.static( 'public/img'));
res.sendFile(path.join(__dirname + "/public" + "/login.html"));
在客户端JS被包含在head标签中
<script src="fingerprint.js" type="text/javascript"></script>
body标签中的内联JS是
var bid = new Fingerprint();
document.getElementById('bid').value = bid.get();
console.log("----"+bid.get());
document.write('Hello');
在这里,如果我从节点服务器运行此 HTML,则内联 JS 不起作用,就好像我在文件模式下运行一样,即 file:///login.html 一切正常。
解决方案
这对我有用:
/* jshint ignore:start */
// app.js
const express = require('express');
const app = express();
const path = require('path');
app.use(express.static(__dirname + "/public"));
// Root path redirect
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname + "/public" + "/login.html"));
});
app.listen(3000, () => console.log('Example app listening on port 3000!'))
HTML 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="/js/fingerprint.js"></script>
</head>
<body>
<!-- HTML Content -->
<div id="bid"></div>
<!-- Inline JS -->
<script>
var bid = new Fingerprint();
document.getElementById('bid').value = bid.get();
console.log("The Bid Value: " + bid.get());
// document.write('Hello');
</script>
</body>
</html>
最后,fingerprint.js 文件:
/* jshint ignore:start */
class Fingerprint {
get() {
return 2;
}
}
我可以看到Fingerprint
对象加载正确:
让我知道这是否适合您。
推荐阅读
- reactjs - 对 Redux 的连接功能感到困惑
- python-3.x - Python:如何连续反映两条n维线中的许多n维点
- r - 无法为 plotly parcoords 图添加颜色?
- batch-file - 选择选项后批处理文件立即退出
- python - lambda 是否可以访问被调用的函数的范围?
- git - 鱼壳:如何解释 git 响应?
- java - 尝试从命令行运行时,Maven 找不到主类
- c# - 配置不同类型的支持字段
- ios - 从 Parse Server Query 检索数据不起作用?
- java - 为什么 Deque delcare 方法与它扩展的 Queue 接口具有完全相同的功能?