NodeJS Express sendFile包含外部JS文件

时间:2014-08-30 11:42:33

标签: javascript node.js express

所以,我有一个像这样的文件结构:

App
 client
   index.html
   App.js
 server
   node_modules
   package.json
   server.js

server.js是由节点运行的服务器文件,它提供index.html

var app = require('express')();
var http = require('http').Server(app);



app.get('/', function(req, res){
   res.sendFile("client/index.html",{ root: '../' });
});




http.listen(3000, function(){
  console.log('Server is listening on port 3000');
});

所以index.html包含了它的头部中的App.js,就像你通常那样

        <script type="text/javascript" src="App.js"></script>

问题是,当我连接时,从未找到并包含App.js.给出了404.我该如何解决?

3 个答案:

答案 0 :(得分:1)

除了在浏览器中请求client/index.html时发送http://127.0.0.1:3000,您的服务器似乎无能为力。 那么实际发生的情况是,当浏览器收到index.html时,它会向http://127.0.0.1:3000/App.js发送另一个请求。但是您的服务器无法回复该请求。它只能是对索引的请求。如果你想要一个静态服务器,请在Github上查看serve-static: https://github.com/expressjs/serve-static 或者你可以为你的应用程序编写另一条路径,就像你对index.html那样使用App.js。

答案 1 :(得分:1)

这个解决了我的问题。你可以看一下。

ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true.setOAuthConsumerKey("xyz")
                .setOAuthConsumerSecret("xyz")
                .setOAuthAccessToken("xyz")
                .setOAuthAccessTokenSecret("xyz");

        Twitter twitter = new TwitterFactory(cb.build()).getInstance();
        List<Status> status = new ArrayList();
        Paging page = new Paging(1, 100);
        status.addAll(twitter.getUserTimeline("NASA", page));

        for (Status tweet : statuses) {
            System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText());
        }

因此,我的 app.js 可以通过 - &gt;访问http://localhost:3000/js/app.js

答案 2 :(得分:0)

使用路径./client/App.js查看您需要访问的服务器文件夹结构,而不是仅查看App.js

所以你的脚本标签看起来像,

<script type="text/javascript" src="./client/App.js"></script>