mirror of
https://github.com/zhigang1992/create-react-app.git
synced 2026-04-21 05:20:19 +08:00
Crash the app if it does not find index.html or index.js (#653)
This commit is contained in:
committed by
Dan Abramov
parent
0be495fdb4
commit
4a0f39ae80
@@ -39,6 +39,7 @@ var nodePaths = (process.env.NODE_PATH || '')
|
||||
module.exports = {
|
||||
appBuild: resolveApp('build'),
|
||||
appHtml: resolveApp('index.html'),
|
||||
appIndexJs: resolveApp('src/index.js'),
|
||||
appPackageJson: resolveApp('package.json'),
|
||||
appSrc: resolveApp('src'),
|
||||
testsSetup: resolveApp('src/setupTests.js'),
|
||||
@@ -56,6 +57,7 @@ function resolveOwn(relativePath) {
|
||||
module.exports = {
|
||||
appBuild: resolveApp('build'),
|
||||
appHtml: resolveApp('index.html'),
|
||||
appIndexJs: resolveApp('src/index.js'),
|
||||
appPackageJson: resolveApp('package.json'),
|
||||
appSrc: resolveApp('src'),
|
||||
testsSetup: resolveApp('src/setupTests.js'),
|
||||
@@ -70,6 +72,7 @@ module.exports = {
|
||||
module.exports = {
|
||||
appBuild: resolveOwn('../build'),
|
||||
appHtml: resolveOwn('../template/index.html'),
|
||||
appIndexJs: resolveOwn('../template/src/index.js'),
|
||||
appPackageJson: resolveOwn('../package.json'),
|
||||
appSrc: resolveOwn('../template/src'),
|
||||
testsSetup: resolveOwn('../template/src/setupTests.js'),
|
||||
|
||||
@@ -49,7 +49,7 @@ module.exports = {
|
||||
// We ship a few polyfills by default.
|
||||
require.resolve('./polyfills'),
|
||||
// Finally, this is your app's code:
|
||||
path.join(paths.appSrc, 'index')
|
||||
paths.appIndexJs
|
||||
// We include the app code last so that if there is a runtime error during
|
||||
// initialization, it doesn't blow up the WebpackDevServer client, and
|
||||
// changing JS code would still trigger a refresh.
|
||||
|
||||
@@ -48,7 +48,7 @@ module.exports = {
|
||||
// In production, we only want to load the polyfills and the app code.
|
||||
entry: [
|
||||
require.resolve('./polyfills'),
|
||||
path.join(paths.appSrc, 'index')
|
||||
paths.appIndexJs
|
||||
],
|
||||
output: {
|
||||
// The build folder.
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
process.env.NODE_ENV = 'development';
|
||||
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var chalk = require('chalk');
|
||||
var webpack = require('webpack');
|
||||
@@ -170,6 +171,20 @@ function openBrowser(port, protocol) {
|
||||
opn(protocol + '://localhost:' + port + '/');
|
||||
}
|
||||
|
||||
function checkRequiredFiles() {
|
||||
var filesPathToCheck = [paths.appHtml, paths.appIndexJs];
|
||||
filesPathToCheck.forEach(function(filePath) {
|
||||
try {
|
||||
fs.accessSync(filePath, fs.F_OK);
|
||||
} catch (err) {
|
||||
var fileName = path.basename(filePath);
|
||||
console.log(
|
||||
chalk.red(`Cannot find ${fileName} in ${filePath} directory`)
|
||||
);
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
}
|
||||
// We need to provide a custom onError function for httpProxyMiddleware.
|
||||
// It allows us to log custom error messages on the console.
|
||||
function onProxyError(proxy) {
|
||||
@@ -180,7 +195,7 @@ function onProxyError(proxy) {
|
||||
' from ' + chalk.cyan(host) + ' to ' + chalk.cyan(proxy) + '.'
|
||||
);
|
||||
console.log(
|
||||
'See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (' +
|
||||
'See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (' +
|
||||
chalk.cyan(err.code) + ').'
|
||||
);
|
||||
console.log();
|
||||
@@ -190,7 +205,7 @@ function onProxyError(proxy) {
|
||||
if (res.writeHead && !res.headersSent) {
|
||||
res.writeHead(500);
|
||||
}
|
||||
res.end('Proxy error: Could not proxy request ' + req.url + ' from ' +
|
||||
res.end('Proxy error: Could not proxy request ' + req.url + ' from ' +
|
||||
host + ' to ' + proxy + ' (' + err.code + ').'
|
||||
);
|
||||
}
|
||||
@@ -304,6 +319,7 @@ function runDevServer(port, protocol) {
|
||||
|
||||
function run(port) {
|
||||
var protocol = process.env.HTTPS === 'true' ? "https" : "http";
|
||||
checkRequiredFiles();
|
||||
setupCompiler(port, protocol);
|
||||
runDevServer(port, protocol);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user