我有以下json:
... / src / app / assets / i18n / en.json
{
"TEST": "This is a some test data in a json file"
}
我有以下代码:
const folderName = "assets/i18n/en.json";
knownFolders.currentApp().getFile(folderName).readText().then(a => console.log("json file: "+ JSON.parse(a))));
它给我以下错误:
ERROR Error: Uncaught (in promise): SyntaxError: Unexpected end of JSON input
JS: SyntaxError: Unexpected end of JSON input
JS: at JSON.parse (<anonymous>)
我尝试过:
folderName
设置为“ /assets/i18n/en.json” this.http.get("~/app/assets/i18n/en.json").toPromise().then(res => console.log("http???", res)).catch(err => console.log("err:", err));
但是错误仍然存在。
更新1 遗憾的是,该文件似乎不存在。 此代码:
const folderName = "assets/i18n";
const fileName = "en.json";
console.log("exists?", File.exists(folderName + "/" + fileName));
返回错误。
尽管可以看到项目文件中提供的图片。 (提供的代码在AppComponent的构造函数中的app.component.ts中) 这可能是什么问题?
更新2 :
更新了我的webpack.config.js
以复制.json文件:
new CopyWebpackPlugin([
{ from: { glob: "fonts/**" } },
{ from: { glob: "**/*.jpg" } },
{ from: { glob: "**/*.json" } },
{ from: { glob: "**/*.png" } },
], { ignore: [`${relative(appPath, appResourcesFullPath)}/**`] }),
但仍然没有运气。该文件仍然不存在...
Update3: 真是荒谬……该文件可以作为标准json文件导入,但Nativescript库仍然看不到。
import { File } from "tns-core-modules/file-system";
import config from "./assets/i18n/hu.json";
....
const folderName = "./assets/i18n";
const fileName = "hu.json";
console.log("config:", config.test)
console.log("exists?", File.exists(folderName + "/" + fileName));
这将产生以下输出:
JS: config: This is a translated line
JS: exists? false
答案 0 :(得分:1)
AFAIK,必须分割路径;您不能直接请求具有相对路径的文件。
const folderName = "assets/i18n";
const fileName = "en.json";
console.log(
knownFolders.currentApp().getFolder(folderName).getFile(fileName).readTextSync(),
);
答案 1 :(得分:1)
在开发应用程序时,我面临类似的情况。问题是未授予文件权限。
无需任何许可即可完美运行的另一种方法是从URL中获取JSON并进行遍历。