仅返回index.html的节点服务器不会加载bundle.js或其他js文件

时间:2016-10-14 13:32:23

标签: javascript angularjs node.js amazon-web-services webpack

Hello stackoverflow成员,

这是我的第一个问题,所以请保持温和。

目前我有一个运行node.js的Amazon-web-service(AWS)服务器。 我已经从AWS复制了node.js文件中的node.js文件。

////node.js
var port = process.env.PORT || 3666,
    http = require('http'),
    fs = require('fs'),
    html = fs.readFileSync('index.html');

var log = function(entry) {
    fs.appendFileSync('/tmp/sample-app.log', new Date().toISOString() + ' - ' + entry + '\n');
};
var server = http.createServer(function (req, res) {
    if (req.method === 'POST') {
        var body = '';

        req.on('data', function(chunk) {
            body += chunk;
        });

        req.on('end', function() {
            if (req.url === '/') {
                log('Received message: ' + body);
            } else if (req.url = '/scheduled') {
                log('Received task ' + req.headers['x-aws-sqsd-taskname'] + ' scheduled at ' + req.headers['x-aws-sqsd-scheduled-at']);
            }

            res.writeHead(200, 'OK', {'Content-Type': 'text/plain'});
            res.end();
        });
    } else {
        res.writeHead(200);
        res.write(html);
        res.end();
    }
});

// Listen on port 3000, IP defaults to 127.0.0.1
server.listen(port);

// Put a friendly message on the terminal
console.log('Server running at http://127.0.0.1:' + port + '/');

我如何在标题中写入我只得到index.html。 这就是它在控制台中的外观

  

bundle.js:1 Uncaught SyntaxError:意外的标记<

如果我在网络标签中打开bundle.js(来自chrome),则只有index.html中的代码

////index.html 
<!doctype html>
<html class="no-js" lang="ger" dir="ltr">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <script type="text/javascript" src="bundle.js" charset="utf-8"></script>
    <script src="https://sdk.amazonaws.com/js/aws-sdk-2.6.7.js" type="application/javascript"></script>
</head>
<body>
<h1>test</h1>

<div ng-view></div>
<script>
            $(document).foundation();
    </script>
</body>

</html>

Node JS and Webpack Unexpected token < 这里有另一个人同样的问题(可能),但我知道他们只推荐了其他服务器应用程序(Express)多远? 但因为我使用AWS我只能使用node.js

它与bundle.js无关。这个问题有任何JavaScript文件。

我没有使用node.js,我只想加载Javascript文件。

一个小问题:我可以正确使用和加载http调用。但这是极其耗时的。我需要在我的AWS s3存储桶上加载所有Js文件(甚至我的模块控制器)。

这是一个单页面应用程序,它有许多自定义Javascript文件和模块。 Here a screenshot from my directory

我期待你的回答!

1 个答案:

答案 0 :(得分:2)

您的节点服务器配置为仅提供index.html文件。

您的http.createServer方法实施可细分为:

When a request comes in
  If it is a POST request
    Process the request
  else
    Serve index.html  

因此,当您bundle.js发出请求时,您正在服务index.html。由于bundle.js应该是javascript,因此在读取<令牌时会引发错误,因为它不是有效的JavaScript令牌。

解决这个问题应该分解为几个问题。您应该从本地设置工作服务器开始 - 使用https://mvnrepository.com/artifact/com.google.code.gson/gson之类的内容可以帮助简化为不同请求提供不同文件的服务。