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

Import NPM module having dependency

本文关键字:NPM 模块 关系 依赖 导入      更新时间:2023-11-08

目前正在切换到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没有找到d3,但在myFile.js上找到了d3d3-tip

我应该在d3工具提示上手动注入d3吗?

我认为你实际上必须进行

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

使其连接到d3.tip()

出现此故障的问题:

import d3 from "d3";

这就是解决方案:

import * as d3 from "d3";

我希望它能帮助到别人。