我已经尝试将文件从本地node.js服务器发送到客户端index.html已有一段时间了,但没有成功。客户端正在使用three.js。这是下面的代码和问题:
app.js:
var express = require('express');
var app = express();
var http = require('http').createServer(app);
var io = require('socket.io')(http);
var THREE = require('three');
var fs = require('fs');
var path = require('path');
var publicPath = path.resolve(__dirname);
console.log("publicPath: "+String(publicPath))
console.log("__dirname: "+String(__dirname))
app.get('/', function(req, res) {
res.sendFile(__dirname + '/index.html');
});
app.get('/rook.amf', function(req, res) {
console.log('test1 :: '+String(__dirname + '\\rook.amf'))
res.write(__dirname + '\\rook.amf'); // there's a javascript loader trying to get this file!
});
io.on('connection', (socket) => {
console.log('a user connected');
});
http.listen(3000, () => {
console.log('listening on *:3000');
});
index.html中的相关Javascript:
var loader = new THREE.AMFLoader();
loader.load('/rook.amf', function ( amfobject ) { //'/models/rook.amf'
scene.add( amfobject );
render();
} );
现在,当我特别刷新网页时,没有任何结果,也看不到窗口。下面的代码直接从教程中获取,将在页面中心显示rook.amf 3D模型。
参考: https://threejs.org/examples/webgl_loader_amf.html(演示) https://github.com/MiLeung/TiltCoaster/blob/master/serve/three/examples/webgl_loader_amf.html(代码)
有人建议我尝试通过在Web浏览器中打开以下文件来直接访问文件,并查看文件是否下载:
http://localhost:3000/rook.amf
它没有下载,并且出现了一个我不明白的错误:
GET http://localhost:3000/rook.amf net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)
经过大量搜索之后,我仍然没有弄清楚如何将我的rook.amf文件(或与此相关的任何3D模型文件)发送到index.html中客户的javascript代码。我该怎么办?