【问题标题】:Import NPM module having dependency导入具有依赖关系的 NPM 模块
【发布时间】:2016-07-21 08:06:02
【问题描述】:

目前正在切换到 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,但d3 因为d3-tipmyFile.js 上找到。

我应该做些什么来在 d3-tooltip 上手动注入 d3 吗?

【问题讨论】:

  • 你的 package.json 文件怎么样? d3-tip 应该在那里声明为依赖项,您还必须运行npm install
  • @VitorRigoni d3-tip 是一个依赖项并已安装,因为错误来自代码到 d3-tip 中,因此我的应用可以访问 d3-tip 代码

标签: javascript meteor npm


【解决方案1】:

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

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

让它附加到 d3.tip()

【讨论】:

    【解决方案2】:

    遇到了这个失败的问题:

    import d3 from "d3";

    这是解决方案:

    import * as d3 from "d3";

    我希望它会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 1970-01-01
      • 2015-12-28
      • 2016-07-12
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 2016-05-03
      • 2014-02-20
      相关资源
      最近更新 更多