导入共享目录文件中的模块时出错

时间:2017-01-21 09:39:33

标签: typescript types typescript-typings

我在共享目录中使用npm @types类型来处理reactlodash等包时遇到问题。当我通过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但没有取得任何成就。

我觉得在webpackts-loader配置中可能有某种方式,或者我可以编写一些可以从node_modules/@types/重新导出这些内容的类型。 我该如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

尝试将此行"allowSyntheticDefaultImports": true放入tsconfig.json。它帮助了我。