javascript - 对象不支持“for”属性或方法
问题描述
我在我的一个项目中使用 Next JS,但在 Internet Explorer 11 中遇到错误:
对象不支持“for”属性或方法
该错误似乎源于commons
orwebpack
文件,请参阅下面的堆栈,其中站点为空白:
在查看文件以了解可能使用该.for
方法的内容后,它似乎适用于捆绑代码中使用的一些符号。
我尝试core-js
在我的 webpack 配置中导入 polyfil,如下所示:
import 'core-js/features/symbol';
但这会引发以下错误:
未捕获错误类型错误:预期对象
我尝试了另一种方法 - 包括我的应用程序中的 polyfil <head>
:
<script src='https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.23.0/polyfill.min.js' />
当我再次尝试在 ie 中运行它时收到以下错误:
未捕获错误 SecurityError
我在上面尝试的两种方法(使用 core-js 导入并包括 babel-polyfil 库)似乎都为Symbol.for
dom 提供了一种方法。IE 如果我Symbol.for
在添加任何一个 polyfil 之前输入,我会得到未定义,并且在它返回我一个函数之后,所以我不太确定它为什么仍然失败。
最后,如果它有任何帮助,这是我的下一个配置,但我认为这不是导致它的原因:
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
}
}))
解决方案
推荐阅读
- java - 变量只能在此位置为空结果集
- bash - 无法从具有相同 ssh 密钥的脚本中克隆 git repo
- haskell - 如何在 IO 中包装单子动作
- linux - 在 BASHRC 与命令行中启动后台进程之间的区别
- python - “运行 setup.py install for statsmodels ... 错误”使用 PIP 安装
- graph - 我们可以使用 TDE 从 XML 生成三元组,其中有多个具有相同名称的子元素?
- docker-compose - Docker-compose Mysql 8.0 default-authentication-plugin问题
- java - 如何确定 CPU 密集型任务运行时的最佳线程数?
- javascript - 使用 JavaScript 从 SVG d3 图表导出 PDF
- asp.net-core - 从 Identity Server4 刷新令牌和访问令牌