我正在尝试在角度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
console.log(this)
显示了ModuleName的一个实例,而该实例的实例为foo
,其中有一个原型,其中定义了init
。
我怀疑这个问题源于某种范围问题,但是对于Angular和Node来说,它仍然是一个新的东西来解决这个问题。
答案 0 :(得分:0)
将import * as ModuleName from "ModuleName"
用于CommonJS模块。