Reactjs 不使用Typescript编写的npm包在安装时需要声明文件

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包。我计划发布一些React组件,但我从一个非常简单的测试包开始。安装工作正常,但当我将一个模块导入另一个项目时,出现了一个声明警告

该模块在新项目中工作并呈现,但有以下错误消息: “找不到模块‘skylight react’的声明文件。”/Users/{my name}/{project root}/node_modules/skylight react/dist/index.js’隐式具有“any”类型。 尝试
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/
),或者自己提供它们。