unk*_*use 2 reactjs webpack webpack-dev-server
我是 React 的新手,我关注了Facebook 的安装(创建新应用程序)。
所以每次我需要运行应用程序时,它都需要启动一个服务器。当我尝试在 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"
}
}
Run Code Online (Sandbox Code Playgroud)
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]
};
Run Code Online (Sandbox Code Playgroud)
问题是:HTML 中其他文件的路径。
当webpack-dev-server从目录运行时,它假定它是服务器的根目录。
因此,如果您打开build/index.html使用 Facebook 教程创建的应用程序的 HTML( ),您可以看到其他文件的路径是作为绝对路径而不是相对路径给出的。
就像在 HTML 中一样,您可以看到/static/pathToFile但看不到./static/pathToFile.
因此,根据你的第二个方法,尽量给的路径,transformed.js为/transformed.js您的HTML。它不显示任何内容。但是如果你运行npm run start然后用给定的端口号打开你的本地主机(就像在第一种方法中一样)。现在你可以看到你的 React 应用了。
意见:始终尝试从头开始自己设置环境。不要尝试像 Facebook 的“创建新应用程序”这样的简单设置方法。而是尝试 Facebook 的“将 React 添加到现有应用程序”。您可以了解事物的实际运作方式,就像今天一样。
提示:
尝试始终在您的网络浏览器中调试应用程序!
例如,在 chrome 中打开第一种方法 HTML 并打开开发人员工具。
将鼠标悬停在失败的文件上以查看错误是什么。你可以看到ERR_FILE_NOT_FOUND。
单击它以查看返回状态、请求的 url 等。
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
708 次 |
| 最近记录: |