我在共享目录中使用npm @types
类型来处理react
,lodash
等包时遇到问题。当我通过typings
安装打字时,问题就消失了,但我真的很喜欢npm推出的类型版本,这些版本似乎是最新的。
让我们说这是一些存储库结构:
projects/
app1/
App.tsx
webpack.config.js
(...)
app2/
App.tsx
(...)
shared/
Test.tsx
当shared/test.tsx
导入React时,这样:
import * as React from "react";
和app1/app.tsx
导入Test
组件,如:
import {Test} from "../shared/test";
我看到TS错误:
ERROR in ../shared/Test.tsx
(1,24): error TS2307: Cannot find module 'react'.
ERROR in ./App.tsx
(25,17): error TS2605: JSX element type 'Test' is not a constructor function for JSX elements.
Property 'setState' is missing in type 'Test'.
只有从位于webpack-config所在目录之外的文件导入才会发生这种情况。
此外,在编译后Test
组件成功显示在App
组件中,因此webpack将这两个组合在一起,但TS错误仍然在控制台中出现。
我将Webpack 2.2.0与ts-loader
一起使用(但尝试了awesome-typescript-loader
),并尝试向webpack的resolve.modules
和tsconfig' s添加一些配置路径compilerOptions.rootPaths
但没有取得任何成就。
我觉得在webpack
或ts-loader
配置中可能有某种方式,或者我可以编写一些可以从node_modules/@types/
重新导出这些内容的类型。
我该如何处理这个问题?
答案 0 :(得分:0)
尝试将此行"allowSyntheticDefaultImports": true
放入tsconfig.json
。它帮助了我。