NodeJS未加载外部javascript
我是NodeJS的新手,似乎不明白我为什么会遇到这个问题 我有一个HTML文件,它使用外部javascript(JS)文件来管理我创建的表。我将JS文件包含在HTML文件的头部,所有文件共享同一目录:NodeJS未加载外部javascript,javascript,node.js,http,Javascript,Node.js,Http,我是NodeJS的新手,似乎不明白我为什么会遇到这个问题 我有一个HTML文件,它使用外部javascript(JS)文件来管理我创建的表。我将JS文件包含在HTML文件的头部,所有文件共享同一目录: <script type="text/javascript" src="test.js"></script> 服务器可以正常加载HTML,但无法访问外部JS脚本。我在inspector中得到一个错误: SyntaxError:意外标记“这是因为当您的页面请求test.js
<script type="text/javascript" src="test.js"></script>
服务器可以正常加载HTML,但无法访问外部JS脚本。我在inspector中得到一个错误:
SyntaxError:意外标记“这是因为当您的页面请求
test.js
时,服务器会使用index.V1.0.html
的内容进行响应。您需要检测浏览器请求的页面并正确响应:
function(request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
let filename = 'index.V1.0.html';
if (request.path === '/test.js') {
filename = 'test.js';
}
var file = fs.createReadStream(filename);
file.pipe(response);
}
您的
test.js
文件也会从本地服务器请求。浏览器无法访问您的文件系统以加载js文件
为了加载外部js,必须创建一个读取流,就像为index.html编写的读取流一样
var fs = require('fs');
var http = require('http');
http.createServer(function(request, response) {
if(request.url === "/test.js") {
var file = fs.createReadStream('test.js');
file.pipe(response);
response.writeHead(200, {'Content-Type': 'text/javascript'});
} else {
var file = fs.createReadStream('index.V1.0.html');
file.pipe(response);
response.writeHead(200, {'Content-Type': 'text/html'});
}
}).listen(8080);
语法错误的原因是,您还为来自浏览器的test.js
请求提供了一个html文件。很明显,它会抛出一个异常。您的错误在哪里
在网络浏览器上?激活调试会话(通过F12)
在服务器上?在调试模式下使用以下命令启动节点:
node --inspect your_server_code.js
它会为您提供一个“调试器键”,如“…127.0.0.1:9229/6ed07c20-f4ba-433a-aeb6-71c4a732d2e2”
然后启动一个新的Chrome选项卡,并粘贴此URL(更改调试器键):
铬-devtools://devtools/bundled/js_app.html?experiments=true&v8only=true&ws=127.0.0.1:9229/6ed07c20-f4ba-433a-aeb6-71c4a732d2e2
因此,您可以调试节点服务器
PS:@Ebrahim Hosseini是rigth,您无法将test.js从节点发送到浏览器。。。但这不能解释你的错误
PS 2:如果您是NodeJS新手,请安装“Visual Studio代码”:
-它将帮助您检测一些错误,语法着色,并用一个简单的F5轻松调试您的服务器 所以这并没有解决问题。它仍然以HTML的形式加载“test.js”文件。我仍然得到语法错误。我已直接复制了您的代码,并提供了“if”语句的正确路径。@Crinse我已将.Path更改为.url。现在应该可以了。
var fs = require('fs');
var http = require('http');
http.createServer(function(request, response) {
if(request.url === "/test.js") {
var file = fs.createReadStream('test.js');
file.pipe(response);
response.writeHead(200, {'Content-Type': 'text/javascript'});
} else {
var file = fs.createReadStream('index.V1.0.html');
file.pipe(response);
response.writeHead(200, {'Content-Type': 'text/html'});
}
}).listen(8080);
node --inspect your_server_code.js