我已经设置了一个angular-cli项目
(@ Angular / cli:1.0.0-rc.2 node:6.10.0 os:linux x64)
用电子js(v1.6.2) 我需要使用文件系统来创建/删除.csv文件和文件夹,但我不能在角度组件中包含
如何配置angular-cli能够:从'fs'导入fs?
答案 0 :(得分:5)
您不会将Angular-CLI配置为使用NodeJS fs模块。
在电子中你有两个过程;主要和渲染器。主进程控制诸如browserWindow之类的项目,它本质上是用户在打开应用程序时看到的“窗口”,反过来又会加载视图的html文件。在此过程中,您将导入fs模块。
在渲染过程中,您将处理视图中的操作,并将它们发送到主进程。在这里,您可以使用IPC通过事件进行通信,以便与主进程进行某些操作。触发该事件后,渲染过程将获取事件并将其发送到main。 Main会对它做些什么,并在桌面上打开一个文件。
我建议使用电子API demo application来查看明确的示例。以下是使用FS(来自演示应用程序)打印到pdf的示例。
此外,这里是Ray Villalobos使用React编写的电子application github示例,它有一些类似的概念,将向您展示如何在您的应用中集成组件。
渲染过程:
const ipc = require('electron').ipcRenderer
const printPDFBtn = document.getElementById('print-pdf')
printPDFBtn.addEventListener('click', function (event) {
ipc.send('print-to-pdf')
})
ipc.on('wrote-pdf', function (event, path) {
const message = `Wrote PDF to: ${path}`
document.getElementById('pdf-path').innerHTML = message
})
主要流程:
const fs = require('fs')
const os = require('os')
const path = require('path')
const electron = require('electron')
const BrowserWindow = electron.BrowserWindow
const ipc = electron.ipcMain
const shell = electron.shell
ipc.on('print-to-pdf', function (event) {
const pdfPath = path.join(os.tmpdir(), 'print.pdf')
const win = BrowserWindow.fromWebContents(event.sender)
// Use default printing options
win.webContents.printToPDF({}, function (error, data) {
if (error) throw error
fs.writeFile(pdfPath, data, function (error) {
if (error) {
throw error
}
shell.openExternal('file://' + pdfPath)
event.sender.send('wrote-pdf', pdfPath)
})
})
})
答案 1 :(得分:1)
您可以尝试在组件中使用const fs = (<any>window).require("fs");
,或者更好的是,创建一个service.ts提供程序来处理I / O操作。