gpt4 book ai didi

javascript - 如何让动态导入在 webpack 4 中工作

转载 作者:行者123 更新时间:2023-11-29 10:29:08 24 4
gpt4 key购买 nike

我正在尝试将我的应用程序迁移到 webpack 4。我的头已经很痛了。

动态导入 - 这是我的代码拆分方法(逐页)。但我无法让它工作。使用以下包设置了非常简单的测试器:

"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.4",
"babel-plugin-transform-async-to-generator": "^6.24.1",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"css-loader": "^0.28.11",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"mini-css-extract-plugin": "^0.4.0",
"react": "^16.4.1",
"react-dom": "^16.4.1",
"webpack": "^4.12.0",
"webpack-cli": "^3.0.8",
"webpack-dev-server": "^3.1.4"
}

这是我的主要测试应用:

import React from "react";
import ReactDOM from "react-dom";
import style from "./main.css";
import pageLoader from './pageLoader';

class App extends React.Component {
render() {
let page = pageLoader();
return (
<div>
<p>React here!</p>
{page}
</div>
);
}
};

export default App;
ReactDOM.render(<App />, document.getElementById("app"));

我的页面我想用单独的包动态加载。

import React from "react";
import ReactDOM from "react-dom";
import style from "./main.css";

const Page1 = () => {
return (
<div>
<p>Page1 here!</p>
</div>
);
};
export default Page1;

到目前为止,这是我的 webpack.config:

const path = require('path');
const HtmlWebPackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports = {
entry: {
polyfill: 'babel-polyfill',
app: './src/index.js'
},
output: {
filename: '[name].bundle.js',
chunkFilename: '[name].bundle.js', //name of non-entry chunk files
path: path.resolve(__dirname, 'dist')
},

module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.html$/,
use: [
{
loader: "html-loader",
options: { minimize: true }
}
]
},
{
test: /\.css$/,
use: [MiniCssExtractPlugin.loader, "css-loader"]
},

]
},

plugins: [
new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "./index.html"
}),
new MiniCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
})
]
};

现在是构建时出错的部分。这是调用动态导入的函数:

function pageLoader() {
return import(/* webpackChunkName: "page1" */ './Page1')
.then(page => {
return page.default;
});

}

export default pageLoader;

我在构建时遇到这个错误:

ERROR in ./src/test/pageLoader.js
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: Unexpected token (2:8)

1 | function pageLoader() {
> 2 | return import(/* webpackChunkName: "page1" */ './Page1')
| ^
3 | .then(page => {
4 | return page;
5 | });

我读过的所有内容都说这是设置它的方法。我做错了什么?

最佳答案

我遇到了同样的问题,修复是:

npm install --save-dev @babel/plugin-syntax-dynamic-import

将以下行添加到 .babelrc

"plugins": ["@babel/plugin-syntax-dynamic-import"],

来源:

关于javascript - 如何让动态导入在 webpack 4 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50976936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com