导入具有依赖关系的NPM模块

时间:2016-04-01 13:29:01

标签: javascript meteor npm

目前转向Meteor 1.3和他的npm模块支持,我遇到了这个问题:

TypeError: Cannot set property 'tip' of undefined

此处相关代码 myFile.js

import d3 from 'd3';
import d3tip from 'd3-tip';

//...
chart.tip = d3tip()
      .attr('class', 'd3-tip')
      .offset([-10, 0])
      .html(function(d) {
         //...
      });

错误来自包d3-tip

(function (root, factory) {                                                                                            
  if (typeof define === 'function' && define.amd) {                                                                    
    // AMD. Register as an anonymous module with d3 as a dependency.                                                   
    define(['d3'], factory)                                                                                            
  } else if (typeof module === 'object' && module.exports) {                                                           
    // CommonJS                                                                                                        
    module.exports = function(d3) {                                                                                    
      d3.tip = factory(d3)  // HERE THE ERROR (d3 probably not defined)                                                                                           
      return d3.tip                                                                                                    
    }                                                                                                                  
  } else {                                                                                                             
    // Browser global.                                                                                                 
    root.d3.tip = factory(root.d3)                                                                                     
  }                                                                                                                    
}(this, function (d3) { //...}

我认为包d3-tip找不到d3d3 d3-tipmyFile.js

我应该在d3-tooltip上手动注入d3吗?

2 个答案:

答案 0 :(得分:2)

我认为你实际上必须这样做

import d3tip from 'd3-tip';
d3tip(d3);

将其附加到d3.tip()

答案 1 :(得分:1)

这个问题出现了问题:

import d3 from "d3";

这是解决方案:

import * as d3 from "d3";

我希望它会帮助别人。