Node.js 我在本地主机中收到404错误,尽管我已经收到了;“npm运行-构建”;

Node.js 我在本地主机中收到404错误,尽管我已经收到了;“npm运行-构建”;,node.js,reactjs,express,Node.js,Reactjs,Express,我正试图发送一个小的演示与反应生产。我没有用CreateReact应用程序制作演示,我是手工制作的。我使用express.js为应用程序提供服务 当我运行命令“SET NODE_ENV=production NODE server.js”(我在Windows中,这就是为什么SET)并转到本地主机时,我一直得到GET/404,尽管我已经发出了命令“npm run build” 因为这是我第一次这样做,我真的不知道会发生什么 这是my package.json: { "name": "app

我正试图发送一个小的演示与反应生产。我没有用CreateReact应用程序制作演示,我是手工制作的。我使用express.js为应用程序提供服务

当我运行命令“SET NODE_ENV=production NODE server.js”(我在Windows中,这就是为什么SET)并转到本地主机时,我一直得到GET/404,尽管我已经发出了命令“npm run build”

因为这是我第一次这样做,我真的不知道会发生什么

这是my package.json:

{
    "name": "app",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "build": "webpack --colors",
        "serve": "webpack-dev-server --content-base build/ --color --        
                  progress",
        "start": "npm run build && npm run serve",
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "Pepe",
    "license": "MIT",
    "devDependencies": {
        "babel-cli": "^6.26.0",
        "babel-core": "^6.26.0",
        "babel-eslint": "^8.2.2",
        "babel-loader": "^7.1.2",
        "babel-preset-env": "^1.4.0",
        "babel-preset-react": "^6.24.1",
        "babel-preset-stage-2": "^6.24.1",
        "css-loader": "^0.28.9",
        "eslint": "3.15.0",
        "eslint-config-airbnb": "14.1.0",
        "eslint-loader": "^1.9.0",
        "eslint-plugin-import": "2.2.0",
        "eslint-plugin-jsx-a11y": "4.0.0",
        "eslint-plugin-react": "6.10.0",
        "extract-text-webpack-plugin": "^3.0.2",
        "html-webpack-plugin": "^2.30.1",
        "identity-obj-proxy": "^3.0.0",
        "jshint": "^2.9.6",
        "style-loader": "^0.20.2",
        "url-loader": "^0.5.8",
        "webpack": "^3.3.0",
        "webpack-dev-server": "^2.9.7"
    },
    "dependencies": {
        "bootstrap": "^4.0.0",
        "compression": "^1.7.3",
        "express": "^4.16.4",
        "mime": "^1.4.1",
        "morgan": "^1.9.1",
        "normalize.css": "^8.0.0",
        "react": "^16.2.0",
        "react-dom": "^16.2.0",
        "react-router-dom": "^4.1.1",
        "uuid": "^3.2.1"
    },
    "standard": {
        "ignore": [
            "/build/"
        ]
    },
    "eslintConfig": {
        "extends": [
            "standard",
            "standard-jsx"
        ]
    },
    "stylelint": {
        "extends": "stylelint-config-standard"
    },
    "optionalDependencies": {
        "win-node-env": "^0.4.0"
    }
}
这是我的server.js:

const { createServer } = require('http');
const express = require('express');
const compression = require('compression');
const morgan = require('morgan');
const path = require('path');

const normalizePortprocess = port => parseInt(port, 10);
const PORT = normalizePortprocess(process.env.PORT || 3000);

const app = express();
const dev = app.get('env') !== 'production';


if (!dev) {
    app.disable('x-powered-by');
    app.use(compression());
    app.use(morgan('common'));

    app.use(express.static(path.resolve(__dirname, 'build')));

    app.get('*', (req, res) => {
        res.sendFile(path.resolve(__dirname, 'build', 'index.html'));
    });
}


if (dev) {
    app.use(morgan('dev'));
}

const server = createServer(app);

server.listen(PORT, err => {
    if(err) throw new err;

    console.log(`Server listen in ${PORT}`); 
});

一切似乎都正常工作,只是尽管多次执行了命令“npm run build”,但仍然没有显示任何内容

您正在开发环境中运行,并且仅在
时处理GET请求!开发人员

if (!dev) { // here is the problem

    // ...

    app.get('*', (req, res) => {
        res.sendFile(path.resolve(__dirname, 'build', 'index.html'));
    });
}
相反,请删除
if
语句并始终处理此路由,或者将其更改为
if(dev)

谢谢,但是app.get('/')不起作用。关于你提到的第二件事,我不明白。我怎么检查?我应该把这些线放在哪里?