代码之家  ›  专栏  ›  技术社区  ›  Ben

在角2+电子中使用绝对路径

  •  1
  • Ben  · 技术社区  · 8 年前

    我开始胡闹角度2和电子,并使用 this starter package 。一切似乎都很顺利,我甚至可以使用node 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'));
    

    这看起来很棒,但在我的角度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;
        }
    }
    

    “URL”类型的[ts]参数不能分配给类型的参数 类型“URL”中缺少属性“write”。

    我读过很多帖子,说他们不能在Angular 2+Typescript中运行fs包,但只要我使用相对路径,它对我来说就很好。我只是需要帮助找到工作的绝对途径。提前谢谢。

    1 回复  |  直到 8 年前
        1
  •  1
  •   RoyalBingBong    8 年前

    Documentation 声明URL支持是在v7.6.0中引入的,并且是实验性的。Electron使用v7.4.0,因此您还不能将URL用于fs。

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

    推荐文章