Webpack找不到带有Typescript导入的keymirror模块

Webpack cannot find keymirror module with Typescript import

我正在使用Typescript,React和Webpack并努力导入keymirror模块。

我正在使用最新版本的typescript。

package.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
 "name":"Fun",
 "version":"1.0.0",
 "description":"Dear Webpack Gods, please help.",
 "main":"app.js",
 "scripts": {
   "test":"echo "Error: no test specified" && exit 1"
  },
 "author":"",
 "license":"",
 "dependencies": {
   "eventemitter3":"^1.1.1",
   "flux":"^2.0.3",
   "keymirror":"^0.1.1",
   "react":"^0.13.3",
   "ts-loader":"^0.5.0",
   "typescript":"^1.6.0-dev.20150812"
  },
 "devDependencies": {
   "css-loader":"^0.16.0",
   "style-loader":"^0.12.3"
  }
}

webpack.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module.exports = {
    entry: './App/app.tsx',
    output: {
        filename: 'bundle.js'
    },
    resolve: {
        extensions: ['', '.js', '.tsx', '.ts']
    },
    module: {
        loaders: [
            { test: /\\.ts(x?)$/, loader: 'ts-loader' },
            { test: /\\.css$/, loader: 'style-loader!css-loader' }
        ]
    }
}

tsconfig.json

1
2
3
4
5
6
7
8
9
10
11
12
{
   "compilerOptions": {
       "target":"ES5",
       "module":"commonjs",
       "jsx":"react",
       "sourceMap": true
    },
   "files": [
       "./typings/tsd.d.ts",
       "./App/app.tsx"
    ]
}

有问题的导入位于./User/Constants.ts

1
2
3
4
5
import keyMirror = require('keymirror');

export = keyMirror({
    LOGIN_ATTEMPT: null
});

我已经尝试使用独立的npm模块,如上所示,并尝试从react / lib / keyMirror要求它。

有什么想法吗?

(编辑:是的,我知道这是一个12行模块,可以将其复制到代码中。)

Basarat的溶液(稍作改动)

1
2
3
4
declare module 'keymirror' {
    function keyMirror(obj: Object);
    export = keyMirror;
}

import keyMirror = require('keymirror');

您需要告诉typescript。基本上像:

1
2
3
4
declare module 'keymirror' {
   var export:any;
   export = export;
}

在名为global.d.ts的文件中。

某些文档:http://basarat.gitbooks.io/typescript/content/docs/types/ambient/intro.html