angular2使用来自npm的twitter模块

时间:2016-02-01 14:06:00

标签: javascript ecmascript-6 angular

我在LODASH导入到Angular2应用程序时出现问题,得到了答案on this post here,现在一切正常。

我遇到的另一个问题是我不知道如何制作" twitter" npm模块在app中工作。

现在我安装了" npm install twitter"并尝试将其导入:

notes = [Notes]()
notes.append(note)
let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.AllDomainsMask, true)
let path: AnyObject = paths[0]
let arrPath = path.stringByAppendingString("/array.plist")

NSKeyedArchiver.archiveRootObject(notes, toFile: arrPath)

但我得到"找不到模块' twitter'。我试着添加到system.config没有运气。

我在这里做错了什么?导入和使用这个推特模块的代码应该如何?

这是index.html中的system.config:

import * as Twitter from 'twitter';

3 个答案:

答案 0 :(得分:1)

我相信你必须将twitter模块的定义文件添加到typings文件夹中。或者使用tsd安装它。之后,您可以使用引用在您的打字稿代码中使用它:

手动下载

  1. here
  2. 下载定义文件
  3. 将其添加到源根目录中的typings文件夹
  4. 使用tsd安装

    1. 在源文件夹中打开cmd
    2. npm install tsd -g
    3. tsd install twitter --save
    4. 之后在打字稿文件的顶部添加引用

      /// <reference path="../typings/twitter.d.ts"/>
      

答案 1 :(得分:0)

twitter模块是一个commonjs模块,所以它不能用于amd。尝试以下配置以查看它是否有效:

System.config({
  packages: {
  app: {
    format: 'register',
    defaultExtension: 'js'
  }
},
map: {
  lodash: 'node_modules/lodash/lodash.js',
  twitter: 'node_modules/twitter'
},
meta: {
  lodash: { format: 'commonjs' },
  twitter: { format: 'commonjs' }
}
});

尝试这样的导入:

import * as Twitter from 'twitter/index';

有用吗?我不认为lodash也是一个amd模块,它也是常见的。你可能可以删除完整的meta部分,systemJs会在大多数时候成功自动检测模块系统的类型。

答案 2 :(得分:0)

我不认为您可以在服务器端模块这样的场景中使用此模块,并且需要运行Node。我设法使用其他模块实现了twitter身份验证: https://github.com/jublonet/codebird-js

我已经在一个实施社交媒体登录的简单项目上工作了一段时间。如果你想要你可以看看: https://github.com/bkulov/EventOrgApp