我开始使用 Angular 2 和 Electron,并使用了这个 starter package。一切似乎都很顺利,我什至可以使用 node fs 包从目录中读取数据。
我遇到的问题是我似乎无法为 readdirSync() 方法使用绝对路径。它只需要相对路径。
我确实在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' 类型的参数不能分配给 'string | 类型的参数 缓冲'。类型“URL”不可分配给类型“缓冲区”。类型“URL”中缺少属性“写入”。
我本来希望语法是相同的,但没有运气。
我已经阅读了很多帖子,说明他们无法在 Angular 2 + Typescript 中运行 fs 包,但只要我使用相对路径,它对我来说效果很好。我只需要帮助获得工作的绝对路径。提前致谢。
文档指出 URL 支持是在 v7.6.0 中引入的并且是实验性的。Electron 使用 v7.4.0,因此您还不能使用带有 fs 的 URL。
fs.readFileSync('C:/tmp/hello')
应该工作得很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句