就像一个魅力的说明:
declare var require;
const Quassel = require('libquassel/lib/libquassel.js');
console.log('Quassel', Quassel);
望着libquassel
的在node_module文件夹,意识到根目录中没有index.js
。
在没有index.js
,你不能做到这一点:
require('libquassel');
很简单,因为节点不知道拉什么在给你,所以你需要指定的确切路径,在这种情况下这并不坏。
另外,请注意,最好将declare var require;
移动到位于src文件夹下的打印文件中,因为您可能需要重新声明它,所以最好在那里。
编辑: 这是我试图实例化Quassel像波纹管后发现:
const Quassel = require('libquassel/lib/libquassel.js');
console.log('Quassel', Quassel);
var quassel = new Quassel("quassel.domain.tld",
4242,
{ backloglimit : 10 },
function (next) {
next("user", "password");
});
console.log('quassel', quassel);
这里是我的控制台日志:
不过话说回来,我意识到有是libquassel.js中的一个问题,如下所示:
在第10行,他们这样做:
var net = require('net');
而看着他们的package.json,没有这样的事情net
有net-browserify-alt
;
所以,如果他们改变进口:
var net = require('net-browserify-alt'),
一切都会解决的。
话虽如此,显然你不想编辑你的node_module,但我真的很惊讶,即使在angular和webpack之外,它真的可以工作,因为显然他们提到了一个错误的node_module,如果你google ,只有一个名为net
的包,我看了一下,它是空的和假的!
** ********** UPDATE:********** **
究竟需要采取哪些措施:
1-运行ng eject
这将在根目录内生成webpack.conf.js
。
2-里面那个找resolve
财产,并添加:
"alias":{
'net':'net-browserify-alt'
},
所以你的决心可能会是这样的:
"resolve": {
"extensions": [
".ts",
".js"
],
"alias":{
'net':'net-browserify-alt'
},
"modules": [
"./node_modules"
]
},
3-进口并使用它:
declare var require;
const Quassel = require('libquassel/lib/libquassel.js');
console.log('Quassel', Quassel);
var quassel = new Quassel("quassel.domain.tld",
4242,
{ backloglimit : 10 },
function (next) {
next("user", "password");
});
console.log('quassel', quassel);
注:
在看看的WebPack配置,恍如的WebPack喜欢重写几个模块,:
"node": {
"fs": "empty",
"global": true,
"crypto": "empty",
"tls": "empty",
"net": "empty",
"process": true,
"module": false,
"clearImmediate": false,
"setImmediate": false
}
我完全不知道为什么,但这个名单是在配置的WebPack,似乎是使net
成为undefiend(空),这就是为什么我们必须创建一个别名。
你能给出更多关于你的设置的细节吗?你的index.html是什么样的?你使用角度cli?你如何导入这个模块? – echonax
@echonax检查我的编辑。您也可以重现我的项目,因为这只是一个简单的角色项目。 – alexandernst
用你配置文件更新你的文章 – Aravind