在Angular 2 + Electron中使用绝对path

我开始搞Angular 2和Electron,并使用这个入门包 。 一切似乎都进展顺利,我甚至可以使用节点fs包从目录中读取。

我遇到的问题是,我似乎无法使用readdirSync()方法的绝对path。 它只需要一个相对path。

我在文档fs中find了这个,你可以使用URL包来显示readdirSync()的绝对path,如下所示:

const fs = require('fs'); const { URL } = require('url'); // file:///C:/tmp/hello => C:\tmp\hello fs.readFileSync(new URL('file:///C:/tmp/hello')); 

这看起来不错,但在我的Angular 2 / TypeScript / Electron世界看来并不奏效。 我看起来像这样:

 import { Injectable } from "@angular/core"; import {readdirSync} from "fs"; import { URL } from "url"; @Injectable() export class LinkDocRetrieverService { getFiles():Array<String> { // read through all the directories to get all the files and folder names let u = new URL("file:///C:/SAFE/MISC"); let x = readdirSync(u); console.log("files retrieved="+ x.length); let files: Array<string> = []; x.forEach(f => { files.push(f); }); return files; } } 

智能感知和运行时都告诉我

[ts]“URL”types的参数不能分配给types为“string |”的参数 缓冲'。 input“URL”不可分配为键入“缓冲区”。 属性“写”在types“URL”中缺less。

我会期望的语法是相同的,但没有运气。

我已经阅读了很多post,说他们不能在Angular 2 + Typescript中运行fs包,但是对于我来说,只要我使用相对path就行。 我只需要帮助获得工作的绝对path。 提前致谢。

文档指出URL支持是在v7.6.0中引入的,并且是实验性的。 Electron使用v7.4.0,因此你不能使用fs的URL。

 fs.readFileSync('C:/tmp/hello') 

应该工作得很好。