Reactjs 不使用Typescript编写的npm包在安装时需要声明文件
我发布了一个超级基本的npm包。我计划发布一些React组件,但我从一个非常简单的测试包开始。安装工作正常,但当我将一个模块导入另一个项目时,出现了一个声明警告 该模块在新项目中工作并呈现,但有以下错误消息: “找不到模块‘skylight react’的声明文件。”/Users/{my name}/{project root}/node_modules/skylight react/dist/index.js’隐式具有“any”类型。 尝试Reactjs 不使用Typescript编写的npm包在安装时需要声明文件,reactjs,npm,typescript-typings,Reactjs,Npm,Typescript Typings,我发布了一个超级基本的npm包。我计划发布一些React组件,但我从一个非常简单的测试包开始。安装工作正常,但当我将一个模块导入另一个项目时,出现了一个声明警告 该模块在新项目中工作并呈现,但有以下错误消息: “找不到模块‘skylight react’的声明文件。”/Users/{my name}/{project root}/node_modules/skylight react/dist/index.js’隐式具有“any”类型。 尝试npm安装@types/skylight react如
npm安装@types/skylight react
如果存在,或者添加包含声明模块“skylight react”的新声明(.d.ts)文件;
ts(7016)
我写的包(skylight react)没有使用Typescript。package.json
如下所示:
{
"name": "skylight-react",
"version": "0.3.0",
"private": false,
"main": "dist/index",
"module": "dist/index",
"typings": "dist/index",
"files": [ "dist", "README.md" ],
"repository": {
"type": "git",
"url": "git+https://github.com/jawblia/components.git"
},
"dependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"web-vitals": "^1.0.1"
},
"scripts": {
"start": "react-scripts start",
"build-examples": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"build": "rm -rf dist && NODE_ENV=production babel src/lib --out-dir dist --copy-files --ignore __tests__,spec.js,test.js,__snapshots__"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"@babel/cli": "^7.13.14",
"@babel/core": "^7.13.14",
"@babel/preset-env": "^7.13.12"
}
}
.babelrc
是
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
我发布的包和导入的项目都不使用Typescript。非常感谢您的帮助 更改您的
package.json
条目以包含扩展名并保持相对性/dist/index.d.ts
必须存在,如果不存在,则用TypeScript编写组件,并在tsconfig.json
中使用declaration:true
或自行声明键入
另外,在未对包进行本地测试并设置.gitignore
以及.npmignore
的情况下,不要发布包。我建议您在发布到npm之前阅读和指导
{
...
"main": "./dist/index.js",
"module": "./dist/index.js",
"typings": "./dist/index.d.ts"
...
}
你确定这是一个错误,而不仅仅是一个警告吗?@zero298模块正在渲染,所以我猜这在技术上是一个警告消息。但是我仍然想抑制它/找出它发生的原因。大概你的新项目使用的是TypeScript-不管包是否也使用TS(你无论如何都会使用JS),你需要告诉编译器它包含了什么。最简单的方法是在发布包时将a.d.ts包含在包中,然后每个使用它的人都会得到类型。@jornsharpe哦,好吧,我想我明白了。是否所有导出而不声明的React npm包都会抛出此警告,因为假定它们可以与TS一起使用?是的,因为编译器找不到任何声明,所以您需要安装包含它们的包(通常为
@types/
),或者自己提供它们。