gpt4 book ai didi

javascript - Webback list 文件未编译为 es5

转载 作者:行者123 更新时间:2023-11-30 14:18:23 25 4
gpt4 key购买 nike

最近,由于 webpack list 文件中包含 IE11 无法运行的 .includes,我们的构建已停止在 IE11 上运行。

我深入研究了这个,发现 react-datepicker 在它的代码中使用了 .includes() 但在我们的 main.app.js 中file 它会转换它,所以里面什么都没有,它只在 list 文件中。

如果我从我们的 webpack 中删除 list 文件,错误将移至 main.app.js 文件,提示 object doesn't support property or method includes。此错误来自 redux-actions 中的 camelCase.js。我觉得这是转移注意力但不完全确定。

我不确定这是 webpack 问题还是 babel 问题,还是插件错误。

我该如何解决?

到目前为止我完成的步骤:

我已经在我们的 package.json 中锁定了对版本 16.3.0 的 react 。

我降级了 react-datepicker 插件。

我已经删除了正在加载的 list 文件。

我已经尝试更新 redux-actions

我已经尝试降级 redux-actions

这是我的 webpack 文件:

const pkg = require('../package.json');
const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');

const appConfig = {
VERSION: pkg.version,
OUTPUT_NAME: pkg.config.OUTPUT_NAME,
DEV_PORT: pkg.config.DEV_PORT
};

const config = {
mode: 'development',
context: path.resolve(__dirname),
entry: {
app: [
'../src/index.js',
'../src/styles/main.css',
'../index.pug'
]
},
output: {
path: path.resolve(__dirname, '../public/'),
filename: `scripts/${appConfig.OUTPUT_NAME}.[name].${appConfig.VERSION}.js`,
publicPath: '/'
},
resolve: {
extensions: [ '.js', '.jsx' ]
},
externals: {
'lottie-web': 'lottie'
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: 'babel-loader'
},
{
test: /\.(css|scss)$/,
exclude: /node_modules/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
sourceMap: true,
importLoaders: 1
}
},
'postcss-loader'
]
},
{
test: /\.pug/,
exclude: /node_modules/,
use: 'pug-loader'
},
{
test: /.(png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot)$/,
exclude: /node_modules/,
use: 'file-loader'
}
]
},
watch: true,
watchOptions: {
ignored: /node_modules/
},
devServer: {
contentBase: path.resolve(__dirname, '../public/'),
port: appConfig.DEV_PORT,
historyApiFallback: true
},
devtool: 'source-map',
optimization: {
runtimeChunk: 'single',
splitChunks: {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'manifest',
chunks: 'all'
}
}
}
},
plugins: [
new ExtractTextPlugin(`../styles/${appConfig.OUTPUT_NAME}.[name].${appConfig.VERSION}.css`),
new CopyWebpackPlugin([
{ from: '../src/assets', to: path.resolve(__dirname, '../public/assets') },
{ from: '../src/content', to: path.resolve(__dirname, '../public/content') }
]),
new HtmlWebpackPlugin({ 'template': '../index.pug' })
]
};

module.exports = config;

最佳答案

与其试图摆脱导致与 Internet Explorer 11 不兼容问题的库,我建议使用 polyfill 来添加对有问题的 API 的支持,例如 Array.includes()在运行时。

可能最受欢迎的解决方案是 Babel Polyfill .

您可以通过将以下脚本标记添加到您页面的 HTML 代码中来使用它:

    <script nomodule src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.min.js" integrity="sha256-WRc/eG3R84AverJv0zmqxAmdwQxstUpqkiE+avJ3WSo=" crossorigin="anonymous"></script>

注意属性 nomodule,这是为了确保只有不支持 ES2015 模块的浏览器才真正加载 polyfill——即 IE11。

现代浏览器(Chrome、Firefox、Safari 等)只会忽略脚本标签,不会给您的用户带来额外的下载负担。

关于javascript - Webback list 文件未编译为 es5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53160188/

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