通过webpack.ProvidePlugin

时间:2015-05-11 16:20:48

标签: typescript lodash webpack

我想用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

当我记录' _'我看到大写实际上是该对象的一个​​函数。

我在这里缺少什么?

3 个答案:

答案 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帮助我们调试它。