このエラーは、webpack _target = node
しかし、私はtarget=web
(デフォルト)
また、reactjsを外部からロードしていません
このエラーは、ブラウザでアプリをロードするときに発生します
私が間違っていることは何ですか?
コンソールで
ファイル
webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');
const nodeExternals = require('webpack-node-externals');
const config = {
target: 'web',
externals: [nodeExternals()],
entry: './src/index.js',
output: {
filename: '[name].bundle.js',
path: __dirname + '/build'
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
},
{
test: /\.(png|svg|jpe?g|gif)$/,
use: [{
loader: 'file-loader',
options: {
name: '[path][name].[ext]'
}
}
]
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: ['file-loader']
}
]
},
devtool: 'inline-source-map',
plugins: [
new HtmlWebpackPlugin({
title: 'Instarem.com'
})
]
};
module.exports = config;
。babelrcを使用して
babel-preset-env
{
"presets": [
"react",
[
"env",
{
"targets": {
"browsers": ["last 2 versions"]
},
"debug": true,
"modules": "commonjs"
}
]
],
"plugins": [
"transform-object-rest-spread",
"transform-class-properties"
]
}
ありがとう:)
手がかりを見つけた
facebookのreact app generatorの作成バンドルに表示されます
module.exports = __webpack_require__(/*! ./lib/React */ "./node_modules/react/lib/React.js");
しかし、私の場合はそれだけを示しています
module.exports = require("react");
使用しないでください
externals: [nodeExternals()],
webアプリで。 https://github.com/liady/webpack-node-externals によると、これはバックエンド専用です。 WebアプリでnodeExternals
を使用するため、CommonJSモジュールを取得します。これには、ビルトインノードrequire
関数が必要です。したがって、エラーを修正するために削除するだけです。
私はこの設定を設定し(envに固有であると思われる無関係なものを除く)、ローカルで設定しました。
package.json
{
"name": "test-webpack",
"version": "1.0.0",
"description": "",
"main": "webpack.config.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.0",
"babel-preset-react": "^6.24.1",
"webpack": "^3.5.5"
},
"dependencies": {
"react": "^15.6.1",
"react-dom": "^15.6.1"
}
}
。babelrc
{
"presets": [
"react",
[
"env",
{
"targets": {
"browsers": ["last 2 versions"]
},
"debug": true,
"modules": "commonjs"
}
]
]
}
webpack.config.js
const config = {
target: 'web',
entry: './index.js',
output: {
filename: '[name].bundle.js',
path: __dirname + '/build',
},
module: {
rules: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
},
],
},
};
module.exports = config;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(<div>Hello</div>, document.getElementById('root'));
index.html
<body>
<div id="root" />
<script src=" ./build/main.bundle.js "></script>
</body>
Npm startを実行するとバンドルが構築され、index.htmlを実行すると反応アプリが実行されました。