Heroku无法找到我的index.js文件

时间:2017-03-16 09:44:37

标签: javascript node.js heroku webpack

我在heroku GET https://my-app.herokuapp.com/index.js 404 (Not Found)

中收到此错误

我的Procfile中有这个:web: npm start

然后在我的package.json中我有"start": "node ./app/index.js"

我的根级别的app文件夹包含index.js,其中包含:

var express = require('express');
var app = express();

app.use('/', express.static('public'));

app.get('/', function(req, res) {
    res.sendFile(__dirname + '/index.html');
});

app.listen(process.env.PORT || 8080);

和我的webpack.config.js文件包含:

var path = require('path');
const webpack = require('webpack')

module.exports = {
 entry: './main.js',

 output: {
   path: path.resolve(__dirname, 'public'),
   filename: 'index.js'
 },

 module: {
   loaders: [
     {
       test: /\.js$/,
       exclude: /node_modules/,
       loader: 'babel',
       query: {
         presets: ['es2015', 'react', 'stage-2']
       }
     },
     {
        test: /\.scss$/,
        loaders: ["style-loader", "css-loader", "sass-loader"]
      }
   ]
 }
}

也许我需要将它指向我的public/index.js文件,但是当我这样做时它仍然无法识别它。

任何想法?

1 个答案:

答案 0 :(得分:2)

这是对节点和/或服务器如何工作的误解。您应该可以转到GET https://my-app.herokuapp.com/,它将返回位于公用文件夹中的index.html文件。告诉节点以"start": "node ./app/index.js"开头只是意味着运行此文件来启动服务器。服务器而不是侦听您定义的路由:

app.get('/', function(req, res) {
    res.sendFile(__dirname + '/index.html');
});

这是在路径https://my-app.herokuapp.com/

上聆听

如果您想收听https://my-app.herokuapp.com/anotherroute,则可以更改之前的内容:

app.get('/anotherroute', function(req, res) {
    res.sendFile(__dirname + '/index.html');
});

由于您使用了app.use('/', express.static('public'));,因此将自动提供与您的路线匹配的所有文件。这意味着如果public目录中有apple.jpg目录中的文件,则可以使用https://my-app.herokuapp.com/apple.jpg

检索该文件