在Angular 2+中调用第三方节点包时缺少原型函数

时间:2017-06-03 16:41:23

标签: javascript angular

我正在尝试在角度2+项目中使用第三方Node模块。

npm install --save ModuleName

一起安装

有问题的函数位于名为Foo.js的文件中,如下所示:

var foo = function(param1, param2) {
    ...
    this.init();
}

foo.protoype = {
    constructor: foo,

    init: function(){
        ...
    },
    ...
}

module.exports = foo;

节点模块的index.js如下所示:

var ModuleName = require("./src/ModuleName");
ModuleName.foo = require("./src/Foo");

module.exports = ModuleName;

我正在尝试在指令中使用该模块:

import { Directive, OnInit } from '@angular/core';
import { ModuleName } from "ModuleName"

@Directive({
  selector: '[customDirective]'
})
export class CustomDirective implements OnInit {
  constructor() {
    ...
  }

  ngOnInit() {
    let poorlyNamedVariable = ModuleName.foo(param1, param2);
  }
}

当调用foo时,它会生成ERROR TypeError: this.init is not a function

foo中的

console.log(this)显示了ModuleName的一个实例,而该实例的实例为foo,其中有一个原型,其中定义了init

我怀疑这个问题源于某种范围问题,但是对于Angular和Node来说,它仍然是一个新的东西来解决这个问题。

1 个答案:

答案 0 :(得分:0)

import * as ModuleName from "ModuleName"用于CommonJS模块。