首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法用SystemJS在angular2中加载菲尼克斯js库

无法用SystemJS在angular2中加载菲尼克斯js库
EN

Stack Overflow用户
提问于 2016-10-15 11:38:57
回答 1查看 175关注 0票数 1

我遵循了Angular2快速启动类型记录教程(这里)。

现在,我正在尝试包括phoenix.js包,以便我可以连接到我的药剂凤凰频道。

我已经将这个包裹中的菲尼克斯添加到我的package.json中并安装了它。

我在systemjs.config.js中添加了如下一行:

代码语言:javascript
复制
'phoenix': 'node_modules/phoenix/web/static/js/phoenix.js'

我试图像这样将它导入到我的Angular2服务中(我正在使用ES6,并且已经阅读了本期):

代码语言:javascript
复制
import { Socket } from 'phoenix';      

我知道错误了

代码语言:javascript
复制
app/app.phoenix_channels.service.ts(2,24): error TS2307: Cannot find module 'phoenix'.

我并不完全确定SystemJS配置文件是如何包含和运行的。它包含在应用程序之前的HTML中,但是我在编译类型记录时看不到它被包含或解析。

我已经看过这个关于堆栈的问题了,但是我想不出如何使用角教程提供的框架加载依赖项。

我尝试将additional_deps添加为systemjs.config.js的一个键,如下所示:

代码语言:javascript
复制
additional_deps: {
  src: 'node_modules/phoenix/priv/static/phoenix.js',
  inject: 'libs'
},

但这似乎行不通。

如何才能加载这个依赖项,以便可以从这个库导入?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-15 12:36:26

您有JS文件,它用于运行时,但错误是编译错误,因为它正在查找类型记录文件。对于库,使用的是TypeScript定义文件,但有些库不支持TypeScript,因此我们需要安装具有类型定义的外部模块。

有些JS项目您可能找不到定义文件,您需要自己编写。或者你可以做你链接到的答案中的海报。只需声明随机的any类型变量(不要导入)

代码语言:javascript
复制
declare var Socket: any;

现在您可以使用Socket了。但是,这方面的问题是您没有任何强类型或intellisense。

幸运的是,有人为菲尼克斯写了一个定义文件。

代码语言:javascript
复制
npm install --save-dev @types/phoenix

这应该能让它发挥作用。就运行时而言,您的SystemJS配置看起来应该很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40058551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档