ค้นหาเว็บไซต์

typescript - วิธีการกำหนดค่าแอป Tarui เพื่ออ่านการตั้งค่า


ฉันต้องการเก็บการตั้งค่าผู้ใช้ของแอป Tauri ไว้ในไฟล์ภายนอก ส่วนหน้า TypeScript ทำดังนี้:

import {appConfigDir} from "tauri-apps/api/path";
...
await fetch(`${await appConfigDir()}symbol-sets.json`) {
    ...
}

โดยการล็อกไปที่คอนโซล ฉันสามารถเห็นว่ามันกำลังพยายามดึงข้อมูลจาก C:\Users\padeso\AppData\Roaming\padeso-svg-symbol-tool\symbol-sets.json

ใน tauri.conf.json ฉันได้เพิ่ม

"tauri": {
      "fs": {
        "readFile": true,
        "scope": ["$APPCONFIG/*"],
      },

ฉันไม่รู้ว่าจะยืนยันได้อย่างไรว่า Tauri กำลังตีความ "$APPCONFIG/*" อย่างไร แต่ตามที่ฉันอ่านเอกสาร ฉันคาดว่ามันจะถูกแก้ไขไปยังตำแหน่งเดียวกับโค้ด อย่างไรก็ตาม มันเกิดข้อผิดพลาด:

Not allowed to load local resource:
file:///C:/Users/padeso/AppData/Roaming/padeso-svg-symbol-tool/symbol-sets.json

ใครช่วยบอกฉันได้ไหมว่าฉันกำลังขาดอะไรอยู่?

คำตอบ #1

คุณได้ลองใช้การเรียก API readTextFile หรือยัง:

import { readTextFile, BaseDirectory } from '@tauri-apps/api/fs';
// Read the text file in the `$APPCONFIG/symbol-sets.conf` path
const contents = await readTextFile('symbol-sets.conf', { dir: BaseDirectory.AppConfig });
const symbolSets = JSON.parse(contents);
console.log(symbolSets);

คำตอบ #2

ในขณะที่วิธีการของ @DeveloperMindset.com ใช้งานได้ดี ผมก็สามารถทำให้มันใช้งานได้โดยใช้คำแนะนำของ @FabianLars เกี่ยวกับการจัดการไฟล์ภายนอกเป็นสินทรัพย์แทนที่จะเป็นไฟล์ นี่คือรายละเอียด เผื่อว่าจะเป็นประโยชน์กับคนอื่นๆ

แทนที่จะตั้งค่ารายการอนุญาตระบบไฟล์ใน tauri.conf.json ให้ตั้งค่ารายการอนุญาตโปรโตคอล:

"tauri": {
    "protocol": {
        "asset": true,
        "assetScope": ["$APPCONFIG/*]
    }
}

แล้วในส่วนหน้าเว็บไซต์ ให้รับ URL ของไฟล์/ทรัพยากร ดังนี้:

import {appConfigDir, join} from "@tauri-apps/api/path";
import {convertFileSrc} from "@tauri-apps/api/tauri";
...
const appConfigDirPath = await appConfigDir();
const configFilePath = await join(appConfigDirPath, 'symbol-sets.json');
const configUrl = convertFileSrc(configFilePath);

await fetch(configUrl, {mode: 'cors'}) {
    ...
}

โปรดทราบว่าคุณต้องระบุ CORS URL ในกรณีนี้ (บนระบบของฉัน) คือ https://asset.localhost/C%3A%5CUsers%5Cpadeso%5CAppData%5CRoaming%5Cpadeso-svg-symbol-tool%5Csymbol-sets.json