我遵循了Angular2快速入门打字稿教程(here)。
现在我正在尝试包含phoenix.js软件包,以便我可以连接到我的Elixir Phoenix频道。
我已将this package中的凤凰添加到我的package.json并安装它。
我在systemjs.config.js中添加了一行代码:
'phoenix': 'node_modules/phoenix/web/static/js/phoenix.js'
我正在尝试将它导入我的Angular2服务(我正在使用ES6并通读this issue):
import { Socket } from 'phoenix';
我收到错误
app/app.phoenix_channels.service.ts(2,24): error TS2307: Cannot find module 'phoenix'.
我实际上并不是100%确定如何包含和运行SystemJS配置文件。它包含在应用程序之前的HTML中,但是当我编译typescript时,我看不到它被包含或解析。
我已经完成了这个question on Stack但我无法弄清楚如何使用Angular教程提供的框架来加载依赖项。
我尝试将additional_deps添加为systemjs.config.js的密钥,如下所示:
additional_deps: {
src: 'node_modules/phoenix/priv/static/phoenix.js',
inject: 'libs'
},
但这似乎不起作用。
如何才能加载此依赖项以便我可以从此库导入?
答案 0 :(得分:1)
你有JS文件,它用于运行时,但错误是编译错误,因为它正在寻找一个打字稿文件。对于库,使用TypeScript定义文件,但有些库没有TypeScript支持,因此我们需要安装带有类型定义的外部模块。
有些JS项目你可能找不到定义文件,你需要自己编写。或者你可以做你所链接的答案中的海报。只需声明随机any
类型变量(不要导入)
declare var Socket: any;
现在您可以使用Socket
。但问题在于你没有任何强类型或智能感知。
幸运的是,有人为凤凰写了一个定义文件
npm install --save-dev @types/phoenix
应该让它发挥作用。就运行时而言,您的SystemJS配置看起来应该是好的。