在TypeScript中导入运行时

时间:2019-07-19 18:09:12

标签: node.js typescript

我想在运行时导入json文件。

我的代码:

const path = "../../assets/data/"+<fileprefix>+".json"
const data : Information = await import(path);

fileprefix在此处会在运行时更改。

我收到如下所示的模块未找到错误。

  

错误:找不到模块'../../ assets / data / US.json

US是运行时附带的文件前缀。

有什么办法可以使节点在运行时找到模块?

1 个答案:

答案 0 :(得分:0)

您不清楚import是什么意思。如果您指的是ES6 importimport 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