无法读取未定义的 属性 '_babelPolyfill'
Cannot read property '_babelPolyfill' of undefined
我正在尝试让 babel-polyfill 与库一起使用,但出现以下错误:
TypeError: Cannot read property '_babelPolyfill' of undefined
at Object.<anonymous> (/Users/foo/webpack-library-starter/lib/library.js:73:6)
...
我正在使用 webpack-library-starter 作为我的模板。
完整复制详细信息:
git clone https://github.com/krasimir/webpack-library-starter.git
cd webpack-library-starter
npm i
npm i --save babel-polyfill
尝试将 import 'babel-polyfill'
添加到 "src/index.js" 的开头,但不添加。
将'babel-polyfill'
添加到"webpack.config.js":
entry: ['babel-polyfill', __dirname + '/src/index.js'],
然后构建并测试:
npm run dev
npm run build
npm test
这个项目模板有点ill-advised。 Webpack 创建要在浏览器环境中加载的包。然而,Mocha 在节点中运行。所以你必须考虑 transmogrifications webpack 对捆绑代码做了什么,以及当这个代码被反馈到节点时会发生什么。
当 babel-polyfill
被 webpack 捆绑时,有一个隐含的假设,即捆绑包将被加载到浏览器和一些特定的全局变量中(即,未绑定函数中的 this
指的是 window
) 会在那里。
在节点中加载 babel-polyfill
的正确方法是使用节点自己的 require
。例如将package.json
中的测试脚本改为:
"test": "mocha --compilers js:babel-core/register --colors -r babel-polyfill ./test/*.spec.js"
尽管如此,您的图书馆的捆绑包根本不应加载 babel-polyfill
。如果您的库初始化 babel-polyfill
并且有人将您的库包含到他们的项目中,该项目也初始化 babel-polyfill
,他们将得到一个异常说明,引用,"only one instance of babel-polyfill is allowed"
。
我正在尝试让 babel-polyfill 与库一起使用,但出现以下错误:
TypeError: Cannot read property '_babelPolyfill' of undefined
at Object.<anonymous> (/Users/foo/webpack-library-starter/lib/library.js:73:6)
...
我正在使用 webpack-library-starter 作为我的模板。
完整复制详细信息:
git clone https://github.com/krasimir/webpack-library-starter.git
cd webpack-library-starter
npm i
npm i --save babel-polyfill
尝试将 import 'babel-polyfill'
添加到 "src/index.js" 的开头,但不添加。
将'babel-polyfill'
添加到"webpack.config.js":
entry: ['babel-polyfill', __dirname + '/src/index.js'],
然后构建并测试:
npm run dev
npm run build
npm test
这个项目模板有点ill-advised。 Webpack 创建要在浏览器环境中加载的包。然而,Mocha 在节点中运行。所以你必须考虑 transmogrifications webpack 对捆绑代码做了什么,以及当这个代码被反馈到节点时会发生什么。
当 babel-polyfill
被 webpack 捆绑时,有一个隐含的假设,即捆绑包将被加载到浏览器和一些特定的全局变量中(即,未绑定函数中的 this
指的是 window
) 会在那里。
在节点中加载 babel-polyfill
的正确方法是使用节点自己的 require
。例如将package.json
中的测试脚本改为:
"test": "mocha --compilers js:babel-core/register --colors -r babel-polyfill ./test/*.spec.js"
尽管如此,您的图书馆的捆绑包根本不应加载 babel-polyfill
。如果您的库初始化 babel-polyfill
并且有人将您的库包含到他们的项目中,该项目也初始化 babel-polyfill
,他们将得到一个异常说明,引用,"only one instance of babel-polyfill is allowed"
。