2016-10-23 23 views
0

如何獲取Typescript 2.0.3以加載安裝到node_modules的任何程序包中的所有定義文件?如何獲取Typescript 2以加載node_modules中的所有定義文件

我寫了一個名爲somatic的包,其中包含一個index.d.ts文件,並將其安裝到測試項目中。我嘗試了所有的方法來加載定義,在我的tsconfig.json中弄亂了類型和類型的root選項,但無濟於事。

這個隱式引用在幾個小時前工作,但它突然停止工作。我重新安裝了TypeScript 2.0.3和Visual Studio Code,但問題仍然存在。

有打字稿加載我的定義文件的唯一方法是添加一個引用到測試文件的頂部像這樣:

/// <reference path="./node_modules/somatic/dist/index.d.ts" /> 

這是我tsconfig:

{ 
    "compilerOptions": { 
     "allowJs": true, 
     "target": "es5", 
     "module": "commonjs", 
     "noImplicitAny": false, 
     "suppressImplicitAnyIndexErrors": true, 
     "removeComments": false, 
     "preserveConstEnums": true 
    } 
} 
+0

該軟件包的'package.json'文件包含以下設置:''types「:」/dist/somatic.d.ts「'。我會嘗試刪除主要的斜槓。 – cartant

+0

我編輯了體模塊的本地安裝文件夾(在node_modules中)以刪除前導斜槓,但問題仍然相同 – prmph

+0

「...突然停止工作」...所以在它停止工作之前更改了什麼? – cartant

回答

0

如果您使用「節點」解析策略(默認情況下我認爲),然後TypeScript在node_modules文件夾中搜索自己。你可以閱讀更多關於here的例子。

也許您需要更新TypeScript或者您的node_modules文件夾未放置在適當的位置以便它可以找到它?

+0

即使我刪除了typeRoots選項,其行爲也是一樣的,而且我的node-modules文件夾位於windows的標準位置。 – prmph

+0

我不確定你在Windows上的標準位置是什麼意思,如果我理解正確,它應該是你文件的任何父母的直接孩子。所以例如如果您有C:\ A \ B \ C \ myfile.ts,則node_modules應位於A,B或C文件夾中或直接位於驅動器C:下。如果你使用例如Visual Studio然後node_modules是一個項目根目錄下的文件夾,因此可以訪問項目根目錄下的所有文件。 –

+0

是的,我有我的項目文件夾下的本地node_modules。而且我在windows上的標準位置也有全局的node_modules – prmph

相關問題