NodeJS未加载外部javascript

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

我是NodeJS的新手,似乎不明白我为什么会遇到这个问题

我有一个HTML文件,它使用外部javascript(JS)文件来管理我创建的表。我将JS文件包含在HTML文件的头部,所有文件共享同一目录:

<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