您没有在问题中提供很多信息,但是根据您提供的信息,我几乎没有什么建议:
意见建议而不是增加很多
express.static用途:
app.use(express.static(__dirname + '/images'));app.use(express.static(__dirname + '/CSS'));app.use(express.static(__dirname + '/font'));app.use(express.static(__dirname ));app.use(express.static(__dirname +'/ketcher'));app.use(express.static(__dirname +'/ChemAlive_JS'));
将您要提供的文件(和目录)放入一个目录(例如)
static,并使用
express.static一次:
app.use(express.static(__dirname + '/static'));
或更妙的是,使用
path模块:
app.use(express.static(path.join(__dirname, 'static')));
您首先需要使用以下
path模块:
var path = require('path');
现在,不要通过以下方式为
'/'路由提供单个文件:
app.get('/', function(req, res) { res.sendFile('/home/laetitia/Project/ChemAlive_Interface_Node/ChemAlive_Interface.html');});
只需将该文件
static作为index.html 放入目录中,即可由
express.static中间件自动提供。基本原理
当前配置它的方式是,例如,每个人都可以下载您的Node应用程序-
app.js包括其所有配置甚至子模块等。
另外,通过
express.static多次使用中间件,我怀疑您不确定这些目录中的文件将如何映射到URL。
将静态文件放在一个位置可以轻松地验证任何脚本标签是否具有正确的路径等。
我猜您没有提供足够的信息来确保确定,但是我的猜测是主HTML文件的Javascript文件未正确加载,但是您没有提供足够的信息来确定。
您可以在浏览器中打开开发人员工具控制台,并在控制台打开时重新加载页面,查看是否有错误。
我怀疑该
ketcher.init()方法正在运行,但是该方法或
ketcher对象未定义,因为某些
<script>标签无法加载。例
遵循我的建议后的完整示例将更加简单:
var path = require('path');var express = require ('express');var app = express();app.use(express.static(path.join(__dirname, 'static')));app.listen(8080);
也许我会添加一些输出以查看发生了什么:
var path = require('path');var express = require ('express');console.log('starting app.js');var app = express();app.use(express.static(path.join(__dirname, 'static')));app.listen(8080, function () { console.log('listening on http://localhost:8080/');});
现在,您可以将所有可提供给浏览器的文件放在一个位置:
static在本示例中的目录中。工作应用
您可以在GitHub上看到我的工作正常的Express应用程序示例,该示例提供静态文件:
- https://github.com/rsp/node-express-static-example
在此示例中,将调用静态文件的目录,
html但是您可以根据需要调用它,只要它与您使用
express.static中间件的方式一致即可。
您可以从此示例项目开始,然后将自己的文件放入
express.static被告知查找要提供文件的目录中。
您还可以更改端口号以满足您的需求。
有和没有Express的情况下都有更多示例可做,另外还有更好的解释:
- https://github.com/rsp/node-static-http-servers
如果页面正在等待加载某些资源,则可能不会触发onload回调。
要查看是否触发了onload回调,可以将其更改为:
<body onload="alert('onload callback fired');">
此外,
ketcher对象可能未初始化或没有
init()方法。加载页面后,您可以打开Javascript控制台并尝试手动运行该方法,以查看如果被触发该方法是否可以工作:
ketcher.init();
您也可以尝试以下命令:
console.dir(ketcher.init);console.dir(ketcher);console.log(typeof ketcher.init);console.log(typeof ketcher);
查看
ketcher对象是否包含应包含的内容。
即使
GET localhost:8080/ketcher.js状态为200
OK,它仍然可以加载一些其他不可用的资源,或者
res.sendFile()(使用这种情况下提供文件的代码很常见)(虽然在这种情况下不太可能),但是它可以提供HTML而不是Javascript并导致
<字符上的神秘解析错误-
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)