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

Javascript 在Angular 2+;中调用第三方节点包时缺少原型函数;,javascript,angular,Javascript,Angular,我试图在angular 2+项目中使用第三方节点模块 与npm安装一起安装--保存模块名 该函数位于名为Foo.js的文件中,如下所示: var foo = function(param1, param2) { ... this.init(); } foo.protoype = { constructor: foo, init: function(){ ... }, ... } module.exports = foo; 节

我试图在angular 2+项目中使用第三方节点模块

与npm安装一起安装--保存模块名

该函数位于名为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时,它会产生
错误类型错误:this.init不是函数

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


我怀疑这个问题源于某种范围问题,但对于Angular和Node来说,我还是太新了,无法解决这个混乱

对于CommonJS模块,使用“ModuleName”中的
import*作为ModuleName。

相同的结果
this.init不是函数
@午餐盒您要使用哪个模块?这可能是一个错误bug@Lunchbox
import ModuleName=require(“ModuleName”)
可能会解决这个问题。请让我知道它是否有效。