JavaScript不加载HTML文件 – nodejs + expressjs

我是nodejs和expressjs的新手,所以我试图构build简单的Web应用程序来掌握这两个框架。 在这里我已经build立了一个具有以下架构的项目:

js test.js views index.html server.js 

我的服务器文件如下所示:

 var fs = require("fs"); var host = "127.0.0.1"; var port = 1337; var express = require("express"); var ejs = require("ejs"); var server = express(); server.use(server.router); server.use(express(__dirname)); server.set('view engine','html'); server.engine('html', require('ejs').renderFile); server.get("*", function(request, response){ response.render('index.html'); }); server.listen(port, host); 

和我的索引文件是这样的:

 <!DOCTYPE html> <html lang="en"> <head> <title>Starter Template for Bootstrap</title> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> <script language="javascript" src="/js/test.js" type="text/javascript"></script> </head> <body ng-app> <div class="container"> <div class="starter-template"> some code </div> </div><!-- /.container --> </body> </html> 

我的index.html文件加载正常,但我不能得到test.js文件加载。 我怎样才能解决这个问题?

       

网上收集的解决方案 "JavaScript不加载HTML文件 – nodejs + expressjs"

Express中使用express.static内置中间件function。

在server.engine之后添加这一行。 这个机制应该允许静态文件被提供,例如图像,javascripts,css

 app.use(express.static(__dirname + '/js')); 

现在你可以加载:

 http://localhost:1337/js/test.js 

改变渲染成sendfile并移动你的js文件夹到公共文件夹,然后添加这个中间件server.use(express(__ dirname +'/ public'));

JS文件呈现为静态文件。 参考: https : //expressjs.com/en/starter/static-files.html首先创build一个文件夹“静态”,并保持其中的.js文件。 现在,在.ejs文件中更正这些.js文件的脚本标记。

在nodejs方面:

 var path = require("path"); app.use(express.static(path.join(__dirname + '/js')));//middleware 

在HTML页面中:

 <script src="./my_script.js"></script>