【发布时间】:2017-09-21 09:49:07
【问题描述】:
我是 React 新手,我关注了 Facebook's Installation(创建一个新应用)。
所以每次我需要运行应用程序时,它都需要启动一个服务器。当我尝试在 chrome 中打开构建版本(直接打开 HTML)时,什么都没有显示。
然后我尝试使用codecademy 教程从头开始设置 React 环境。这里我建好项目后直接用chrome打开html就可以显示内容了。
我的问题是:
为什么网页在第一种方法中没有显示,而第二种方法在没有启动服务器的情况下运行?
编辑:
package.json 用于第二种方法:
{
"name": "practice",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "webpack-dev-server"
},
"author": "",
"license": "ISC",
"dependencies": {
"react": "^15.6.1",
"react-dom": "^15.6.1"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-react": "^6.24.1",
"html-webpack-plugin": "^2.30.1",
"webpack": "^3.6.0",
"webpack-dev-server": "^2.8.2"
}
}
webpack.config.js:
var HTMLWebpackPlugin = require('html-webpack-plugin');
var HTMLWebpackPluginConfig = new HTMLWebpackPlugin({
template: __dirname + '/app/index.html',
filename: 'index.html',
inject: 'body'
});
module.exports = {
entry: __dirname + '/app/index.js',
module: {
loaders: [
{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
}
]
},
output: {
filename: 'transformed.js',
path: __dirname + '/build'
},
plugins: [HTMLWebpackPluginConfig]
};
【问题讨论】:
-
简单答案.. 确定您在代码学院中运行
npm run build的原因及其作用。你应该能够弄清楚这一点。如果您在阅读后仍有疑问,请回复 -
@Panther 在我的 package.json 中,构建脚本是
webpack,启动脚本是webpack-dev-server。所以,在我的第二种方法中,我只是调用webpack来调用加载程序。我没有打电话给start来启动服务器。我用 package.json 编辑了我的问题。 -
我的意思是在
webpack中实际上转换(使用 babel)、丑化和构建你的build/dist文件夹。因此,从它们打开索引文件会向您显示所有必需的 js/css 都存在的内容。使用dev-server时不会生成任何实际文件。所需的 js/css 主要是来自内存文件系统的服务器。 -
在您的
create-react-app方法中,如果您使用npm run build,然后从build目录打开索引,您应该会看到两个教程的相同行为。 -
@Panther 没用。如下所述,问题出在路径上。我尝试了他/她提到的第二种方法(更改我的
.js文件的路径)并且它有效,我明白出了什么问题。
标签: reactjs webpack webpack-dev-server