Node.js 我在本地主机中收到404错误,尽管我已经收到了;“npm运行-构建”;
我正试图发送一个小的演示与反应生产。我没有用CreateReact应用程序制作演示,我是手工制作的。我使用express.js为应用程序提供服务 当我运行命令“SET NODE_ENV=production NODE server.js”(我在Windows中,这就是为什么SET)并转到本地主机时,我一直得到GET/404,尽管我已经发出了命令“npm run build” 因为这是我第一次这样做,我真的不知道会发生什么 这是my package.json: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
{
"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('/')不起作用。关于你提到的第二件事,我不明白。我怎么检查?我应该把这些线放在哪里?