如何在电子

时间:2017-10-15 12:07:34

标签: node.js angular electron node-modules

问题描述: 这与this问题不重复。我不是试图访问电子模块(我用electron wrapper for angular来做这个),我试图在角度内使用npm原生模块,同时在电子内部运行角度。

原始说明: 我有一个角度应用程序,我用电子运行(一个新的应用程序,还没有做任何事情)。 要访问蓝牙,我使用noblebleno但是当他们在电子内部工作时(为了测试这个,我在电子文件夹中添加了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,因此我猜测我无法从角度内进入贵族,而无需进行一些修改。

文件夹结构

enter image description here

解决方案尝试:(因为我是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');
}

0 个答案:

没有答案