2016-01-02 69 views
3

我想將一個node_module導入到TypeScript文件中。我正在使用angular2-webpack-starter改編我的項目結構。Webpack/typescript需要工作,但導入不是

import ace from 'brace'; 

在我的文件中的一個給了我

找不到模塊 '梅開二度'。

var ace = require('brace'); 

工作正常。根據this issue我不應該有任何問題。

我的webpack配置文件是從angular2-webpack-starter複製的。 我tsconfig.json如下

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "removeComments": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "sourceMap": true 
    }, 
    "files": [ 
    "src/bootstrap.ts", 
    "src/vendor.ts", 
    "src/polyfills.ts" 
    ], 
    "filesGlob": [ 
     "./src/**/*.ts", 
     "!./node_modules/**/*.ts" 
    ], 
    "compileOnSave": false, 
    "buildOnSave": false 
} 

爲什麼會一個工作而不是其他?

+0

你提到的問題似乎與babel相關而不是tsc。你可以發佈導入語句的js tsc輸出嗎? – toskv

+0

您是否嘗試過'從'brace'中輸入*作爲ace? – Louy

回答

5

答案與this issue有關。如果一個模塊沒有可用(通過.d.ts文件)類型的數據,該ES6模塊語法

import name from "module-name"; 
import * as name from "module-name"; 
import { member } from "module-name"; 
//etc 

不會工作,必須使用CommonJS的替代,

var name = require("module-name"); 
+0

從TypeScript的2.1版本開始,這不再是真實的。 – Harangue

+0

它現在如何工作? – Samir

+0

@Samir標準ES2015導入/導出語義。 [這是發行說明](https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#untyped-imports) – Harangue

相關問題