我想在运行时导入json文件。
我的代码:
const path = "../../assets/data/"+<fileprefix>+".json"
const data : Information = await import(path);
fileprefix
在此处会在运行时更改。
我收到如下所示的模块未找到错误。
错误:找不到模块'../../ assets / data / US.json
US
是运行时附带的文件前缀。
有什么办法可以使节点在运行时找到模块?
答案 0 :(得分:0)
您不清楚import
是什么意思。如果您指的是ES6 import
(import something from 'something'
),则不会。你不能那样做。但是,我看到您正在做import(path)
。 import()
是某种类型的库,还是您希望它可以与es6导入一起使用?
这是您应该执行的操作(IMO):
您可以做的是将json文件作为静态文件提供,然后使用fetch
API将json引入。
例如:
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => console.log(json))
很显然,它不是您的静态json文件的网址,而是https://jsonplaceholder.typicode.com/todos/1
的网址。
另一个选择是将所有json文件(或对json文件的引用)放入一个模块中。然后,您可以导入该模块,然后调用您需要调用的任何方法,以便返回正确的json文件。以下是有关此操作的文章:https://medium.com/@leonardobrunolima/javascript-tips-dynamically-importing-es-modules-with-import-f0093dbba8e1