问题描述: 这与this问题不重复。我不是试图访问电子模块(我用electron wrapper for angular来做这个),我试图在角度内使用npm原生模块,同时在电子内部运行角度。
原始说明:
我有一个角度应用程序,我用电子运行(一个新的应用程序,还没有做任何事情)。
要访问蓝牙,我使用noble和bleno但是当他们在电子内部工作时(为了测试这个,我在电子文件夹中添加了noble = require('noble')
到index.js)它们不起作用我在angular.compoents.js中加入了例如贵重的角色。
这是我的app.component.ts
import { Component } from '@angular/core';
import {ElectronService} from 'ngx-electron';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title: String = 'Colaboration room';
noble = require('noble')
}
我收到此错误:
>警告在./node_modules/bindings/bindings.js 76:43-53严重 依赖:依赖的请求是表达式
虽然这只是一个警告,但不再显示角度初始页面(空白)。
问题: 如何在Angular中访问节点本机模块(在电子系统中运行时)?
其他信息:
我使用angulars默认编译器webpack
本机模块是针对来自电子的节点版本构建的
与electron-rebuild。
我使用ngx-electron
模块从角度内部访问电子api,因此我猜测我无法从角度内进入贵族,而无需进行一些修改。
文件夹结构
解决方案尝试:(因为我是node和Angular的新手,我很高兴代码改进!)
由于我使用a wrapper来访问电子apis,我对电子模块没有任何问题。 我真正的问题是我不知道如何以角度访问本机节点模块。
一种可能的解决方案是add the native npm module to webpacks script part(我还没有对此进行测试)。 另一个解决方案是在电子main.js中使用require并将其设置为a 全局变量。
const noble = require('noble');
global.sharedObj = noble;
然后,您可以使用带有angular electron wrapper的电子api访问此全局变量。
getBluetoothCentralPulgin(){
var es = new ElectronService();
return es.remote.getGlobal('sharedObj');
}