javascript没有在HTML文件中加载 - nodejs + expressjs

时间:2014-02-26 12:46:53

标签: javascript node.js express routes

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

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文件。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

在Express中使用 express.static 内置中间件功能。

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

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

现在你可以加载:

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

答案 1 :(得分:0)

将render更改为sendfile并将js文件夹移动到公共文件夹,然后添加此中间件 server.use(表达(__目录名+ '/公共'));

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在nodejs方面:

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

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