在Angular 2 + Electron中使用绝对路径

时间:2017-07-03 01:51:32

标签: node.js angular electron fs

我开始搞乱Angular 2和Electron,并使用了this starter package。一切似乎进展顺利,我甚至可以使用节点fs包从目录中读取。

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

我确实在docs for fs中找到了这个,你可以使用URL包来显示readdirSync()的绝对路径,如下所示:

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;
    }
}

intellisense和运行时都告诉我

  

[ts]类型'URL'的参数不能分配给类型的参数   '字符串|缓冲'。类型“URL”不能分配给“缓冲区”类型。       “URL”类型中缺少属性“write”。

我原本希望语法相同,但没有运气。

我已经阅读了很多帖子,说明他们无法在Angular 2 + Typescript中运行fs包,但只要我使用相对路径,它对我来说效果很好。我只需要帮助获得绝对的工作路径。提前谢谢。

1 个答案:

答案 0 :(得分:1)

Documentation表示在v7.6.0中引入了URL支持并且是实验性的。 Electron使用v7.4.0,因此你不能使用带有fs的URL。

import pandas as pd
a = pd.read_csv("file.csv")
df = pd.DataFrame(a)
df['Quantity'] = df.groupby(['Symbol']).transform('sum')
df.drop_duplicates(inplace=True)

应该工作得很好。