TypeScript棘手的模块未找到错误

5

我正在使用 ionic 1,想改用 TypeScript 并使用 ionic-native 功能。

  • 我尝试了以下代码:import {Calendar} from 'ionic-native';
  • 但是出现了错误:[ts] Cannot find module 'ionic-native'

于是我去参考了文档 TypeScript 如何解析模块。文档中提到 TypeScript 会在以下路径中查找模块:

1. /root/node_modules/moduleB.ts
2. /root/node_modules/moduleB.tsx
3. /root/node_modules/moduleB.d.ts
4. /root/node_modules/moduleB/package.json (if it specifies a "typings" property)
5. /root/node_modules/moduleB/index.ts
6. /root/node_modules/moduleB/index.tsx
7. /root/node_modules/moduleB/index.d.ts 

所以我查看了我的node_folders,看看是否有一个路径匹配:

node_modules
- ionic-native
-- dist
-- package.json

因此,我认为第四项应该匹配,因为package.json包含以下内容:
"typings": "dist/es5/index.d.ts

但是它不起作用。

如果我改为:

import {Calendar} from '../../../node_modules/ionic-native/dist/es5/index';

功能是正常的,但我不想在所有文件中都这样做,那样太复杂了 :/


因为我想要向前迈进,在TypeScript文档中搜索了另一种方法。我还可以看到,你可以在tsconfig.json中为模块设置路径属性

但有趣的是,如果我放入正确的JSON,它不起作用:

"paths": {
  "ionic-native": ["node_modules/ionic-native/dist/es5/index.d.ts"]
}

当我输入无效的JSON时,它仍然可以工作(注意缺少的"):

"paths": {
  ionic-native: ["node_modules/ionic-native/dist/es5/index.d.ts"]
}

有什么想法吗?

5
亲爱的投反对票者,你可以回答这个问题而不是投反对票。 - mnewmedia
1个回答

5

我按照TS教程操作,只是复制了tsconfig.json文件,但是有不同类型的模块,我遇到了一些问题。

"module": "system",

刚刚将其替换为

"module": "commonjs",

并且哇,瞬间一切都能够运作,就像我一直所希望的那样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接