我正在将Next JS用于我的一个项目,并且在Internet Explorer 11中遇到错误:
对象不支持'for'属性或方法
该错误似乎起源于commons
或webpack
文件,请参见下面的堆栈,其中网站被屏蔽:
在查看了文件中的.for
方法后,似乎是捆绑代码中使用的一些符号。
我尝试像这样在我的webpack配置中导入core-js
polyfils:
import 'core-js/features/symbol';
但这会引发以下错误:
未捕获到错误TypeError:预期对象
我尝试了另一种方法-在我的应用<head>
中包括polyfil:
<script src='https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js' />
并再次尝试在ie中运行时收到以下错误:
未捕获到错误SecurityError
我上面尝试的两种方法(使用core-js导入并包括babel-polyfil库)似乎都为dom提供了Symbol.for
方法。 IE,如果我在添加任何一个polyfil之前键入Symbol.for
都会得到未定义的结果,并在返回后返回一个函数,所以我不太确定为什么它仍然会失败。
最后,如果有什么帮助,这是我的下一个配置,但我认为这不是导致它的原因:
require('dotenv').config()
const webpack = require('webpack')
const withSass = require('@zeit/next-sass');
const withFonts = require('next-fonts');
module.exports =
withFonts(withSass({
webpack: (config, {
dev
}) => {
// Fixes npm packages that depend on `fs` module
config.node = {
fs: 'empty'
}
config.plugins.push(new webpack.EnvironmentPlugin(process.env))
if (dev) {
config.devtool = 'cheap-module-source-map';
}
config.module.rules.push({
test: /\.(png|svg)$/,
use: {
loader: 'url-loader',
options: {
limit: 100000,
publicPath: './',
outputPath: 'static/',
name: '[name].[ext]'
}
}
})
const originalEntry = config.entry
config.entry = async () => {
const entries = await originalEntry()
if (
entries['main.js'] &&
!entries['main.js'].includes('./client/polyfills.js')
) {
entries['main.js'].unshift('./client/polyfills.js')
}
return entries
}
return config
}
}))