我想导入我的Package.json文件在TypeScript中,它似乎不起作用.具体来说,我只是try 导入它,以便可以访问日志(log)语句的名称和版本属性.比如:

import * as pjson from '../package.json';
// other code here
log.info(`${pjson.name}:${pjson.version}` started on port ...);

在其他使用Node/Babel的项目中,我们也有同样的语法,但我试图围绕这些部分介绍一些类型脚本.在其他地方,我们会这样做:

import { name, version} from '../package.json';

然而,这在这里不起作用.我按照https://www.npmjs.com/package/json-d-ts的说明操作,这至少使我的import语句中的错误消失了,但现在当我try 访问属性时,我得到了以下错误:

src/index.ts(20,21): error TS2339: Property 'name' does not exist on type 'typeof import("*.json")'.
src/index.ts(20,35): error TS2339: Property 'version' does not exist on type 'typeof import("*.json")'.

有没有办法解决这个问题,或者我只需要在某个地方硬编码这些值(而不是从package.json中动态检索它们)?也许我可以用定义的属性为import("*.json")声明一个类型?

推荐答案

从TypeScript 2.9开始,您可以按如下所述导入JSON文件:

项目中需要typescript 2.9版:

npm i typescript@latest --saveyarn add typescript

如果使用tsc从命令行生成typescript文件,则需要全局安装最新的typescript版本:

npm i -g typescript@latestyarn global add typescript

如果使用webpackwebpack-dev-server构建项目,则需要确保json个文件作为静态文件托管在webpack-dev-server上下文中.即使你托管了import个json文件,你也无法在这样的web环境中运行,你需要用ajax个请求加载json个文件,用JSON.parse个请求解析响应.

Typescript相关问答推荐

在Switch陈述中输入保护类

Typescript如何从字符串中提取多个文本

为什么缩小封闭内部不适用于属性对象,但适用于声明的变量?

JS Redux Devtools扩展不工作

`((PrevState:NULL)=>;NULL)|null`是什么意思?

Redux—Toolkit查询仅在不为空的情况下添加参数

键集分页顺序/时间戳上的筛选器,精度不相同

有没有办法解决相互影响的路由之间的合并?

向NextAuth会话添加除名称、图像和ID之外的更多详细信息

如何使我的函数专门针对联合标记?

有没有办法防止类型交集绕过联合类型限制?

如何在Deno中获取Base64图像的宽/高?

埃斯林特警告危险使用&as";

作为参数的KeyOf变量的类型

使用RXJS获取数据的3种不同REST API

Svelte+EsBuild+Deno-未捕获类型错误:无法读取未定义的属性(读取';$$';)

使用嵌套属性和动态执行时,Typescript 给出交集而不是并集

是否可以使用元组中对象的键来映射类型

基于泛型类型的条件类型,具有条目属性判断

如何判断路由或其嵌套路由是否处于活动状态?