Używam ionic 1
i pomyślałem, że dobrym pomysłem byłoby przejście na TypeScript. Potem oczywiście chcę skorzystać z ionic-native
funkcje.
- Starałem się:
import {Calendar} from "ionic-native";
- ale mam:
[ts] Cannot find module "ionic-native"
.
Więc poszedłem do czytania dokumentów Jak TypeScript rozwiązuje moduły. Dokumenty mówią, że próbuje zlokalizować moduł w następujących ścieżkach:
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
Więc zajrzałem do moich folderów węzła i sprawdziłem, czy jedna ścieżka pasuje:
node_modules
- ionic-native
-- dist
-- package.json
Myślę, że numer 4. powinien się zgadzać, ponieważ plik package.json zawiera:
"typings": "dist/es5/index.d.ts
Ale to nie działa.
Jeśli zamiast tego:
import {Calendar} from "../../../node_modules/ionic-native/dist/es5/index";
działa, ale nie chcę tego robić we wszystkich plikach, to zbyt skomplikowane: /
Ponieważ chciałem iść naprzód, szukałem innego sposobu w dokumentach TypeScript. Mogłem również przeczytać, że możesz umieścić paths property for modules
w tsconfig.json
Ale zabawna część tego jest, jeśli umieściłem poprawne json to, to nie działa:
"paths": {
"ionic-native": ["node_modules/ionic-native/dist/es5/index.d.ts"]
}
Kiedy umieszczam w nim nieprawidłowy json, działa (zauważ brakujące) "
):
"paths": {
ionic-native: ["node_modules/ionic-native/dist/es5/index.d.ts"]
}
Jakieś pomysły?
Odpowiedzi:
2 dla odpowiedzi № 1Poszedłem za tutorialem TS i właśnie skopiowałem tsconfig.json
, ale są różne rodzaje modułów i miałem
"module": "system",
po prostu go zastąpiłem
"module": "commonjs",
i krzyczy, od razu wszystko działa, jakbym kiedykolwiek chciał.