如何摆脱打字稿错误信息"找不到模块' localforage'"

时间:2016-04-05 11:35:44

标签: cordova vim typescript ionic-framework ionic2

我正在做一个离子2 / cordova项目,并且正在使用带有打字稿支持的vim。

我的代码中有以下行:

import * as localforage from "localforage";

代码运行没有问题但是typescript编译器给出了以下错误

/path/to/file.ts|2 col 30 error| Cannot find module 'localforage'.

任何提示如何避免该错误?

更新

import {Injectable} from "angular2/core";
import * as localforage from "localforage";

@Injectable()
export class DbService {

  constructor() {
    //this.run();
  }

  setKeyVal(k, v){
    console.log("db service setKeyVal");
    let ran = Math.floor(Math.random() * 1000) + 1;
    localforage.setItem(k, device.uuid).then(function () {
      return localforage.getItem(k);
    }).then(function (value) {
      console.log(value);
      // we got our value
      console.log(navigator.connection.type);
      console.log("setItem then");
    }).catch(function (err) {
      // we got an error
      console.log("setItem catch");
    });
  }
}

更新1 - typings.json

{
  "dependencies": {},
  "devDependencies": {},
  "ambientDependencies": {
    "cordova-ionic": "registry:dt/cordova-ionic#0.0.0+20160316155526",
    "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c",
    "localforage": "registry:dt/localforage#0.0.0+20160316155526"
  }
}

更新2 - tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true
  },
  "filesGlob": [
    "**/*.ts",
    "!node_modules/**/*"
  ],
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ],
  "compileOnSave": false,
  "atom": {
    "rewriteTsconfig": false
  }
}

4 个答案:

答案 0 :(得分:3)

首先 - 从localforage

安装类型定义

第二 - 将导入更改为:

import {localforage} from 'localforage';

答案 1 :(得分:1)

我曾尝试为localforage安装类型,但它对我没用。

typings install localforage --ambient --save

但我能用tds做到这一点。

npm i tsd -g
tsd install localforage

我正在使用Ionic2版Beta.29

更新/typeings/index.d.ts

/// <reference path="localForage/localForage.d.ts" />

添加此行。

最后,导入为

import {localforage} from 'localforage';

现在一切都会好起来的。

答案 2 :(得分:1)

我已经尝试了typings installtsd install命令。但它们都没有奏效。最后,我从离子论坛找到了解决方案:here

希望如果有人遇到同样的问题,这会有所帮助。

步骤1:安装Mozilla localForage。

$ npm install localforage --save

步骤2:安装localForage类型定义。

$ npm install -g typings
$ typings install dt~localforage --save --global

我没有将导入更改为import {localforage} from 'localforage';。只需将其保留为

import LocalForage from 'localforage';

答案 3 :(得分:0)

我遇到了运行时错误,找不到模块“ localforage”。我跑了命令

npm uninstall --save @ionic/storage
npm install --save @ionic/storage

对我来说有帮助