【问题标题】:Using absolute path in Angular 2 + Electron在 Angular 2 + Electron 中使用绝对路径
【发布时间】:2017-12-06 04:52:00
【问题描述】:

我开始使用 Angular 2 和 Electron,并使用了 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'));

看起来不错,但在我的 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' 类型的参数不可分配给类型参数 '字符串 |缓冲'。类型“URL”不可分配给类型“缓冲区”。 “URL”类型中缺少属性“write”。

我原以为语法是一样的,但没有运气。

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

【问题讨论】:

    标签: node.js angular electron fs


    【解决方案1】:

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

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

    应该可以正常工作。

    【讨论】:

    • 就我而言,它看起来像:let x = readdirSync("C:/SAFE/MISC");
    猜你喜欢
    • 2016-06-04
    • 2017-01-19
    • 2020-01-18
    • 2021-04-22
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    相关资源
    最近更新 更多