我想用webpack.ProvidePlugin提供一些lodash mixins,例如:
import * as _ from 'lodash';
export {_};
_.mixin({
capitalize: function (input: string) {
bla...
}
})
我在Webpack中使用Typescript。
在webpack.config.js中我有:
lodashPlugin = new webpack.ProvidePlugin({
_: 'common/lodash_mixins'
})
当我尝试使用_.capitalize(string)
时,我得到了
TypeError: _.capitalize is not a function
当我记录' _'我看到大写实际上是该对象的一个函数。
我在这里缺少什么?
答案 0 :(得分:1)
您要将_
导出为import { _ } from 'common/lodash_mixins';
所需的命名导出,但ProvidePlugin希望您导出单个对象。您应该使用默认导出。
export default _;
请参阅default export。
答案 1 :(得分:0)
TypeError: .capitalize不是函数 当我记录' '我看到大写实际上是该对象的一个函数。
log _.capitalize
你会发现它是未定义的。如果您只记录_
,您将有机会看到变异版本(开发工具将允许延迟评估)。 =>如果这是正确的,那么它会让我相信你的代码中有某个订购问题。
答案 2 :(得分:0)
我发现为我工作的解决方案是:
import * as lodashExtended from 'lodash';
module.exports = lodashExtended;
lodashExtended.mixin({
capitalize: function (input: string) {
bla...
}
})
我更喜欢使用es6语法但尚未找到的解决方案。
感谢@basarat帮助我们调试它。