我遵循了Angular2快速启动类型记录教程(这里)。
现在,我正在尝试包括phoenix.js包,以便我可以连接到我的药剂凤凰频道。
我已经将这个包裹中的菲尼克斯添加到我的package.json中并安装了它。
我在systemjs.config.js中添加了如下一行:
'phoenix': 'node_modules/phoenix/web/static/js/phoenix.js'我试图像这样将它导入到我的Angular2服务中(我正在使用ES6,并且已经阅读了本期):
import { Socket } from 'phoenix'; 我知道错误了
app/app.phoenix_channels.service.ts(2,24): error TS2307: Cannot find module 'phoenix'.我并不完全确定SystemJS配置文件是如何包含和运行的。它包含在应用程序之前的HTML中,但是我在编译类型记录时看不到它被包含或解析。
我已经看过这个关于堆栈的问题了,但是我想不出如何使用角教程提供的框架加载依赖项。
我尝试将additional_deps添加为systemjs.config.js的一个键,如下所示:
additional_deps: {
src: 'node_modules/phoenix/priv/static/phoenix.js',
inject: 'libs'
},但这似乎行不通。
如何才能加载这个依赖项,以便可以从这个库导入?
发布于 2016-10-15 12:36:26
您有JS文件,它用于运行时,但错误是编译错误,因为它正在查找类型记录文件。对于库,使用的是TypeScript定义文件,但有些库不支持TypeScript,因此我们需要安装具有类型定义的外部模块。
有些JS项目您可能找不到定义文件,您需要自己编写。或者你可以做你链接到的答案中的海报。只需声明随机的any类型变量(不要导入)
declare var Socket: any;现在您可以使用Socket了。但是,这方面的问题是您没有任何强类型或intellisense。
幸运的是,有人为菲尼克斯写了一个定义文件。
npm install --save-dev @types/phoenix这应该能让它发挥作用。就运行时而言,您的SystemJS配置看起来应该很好。
https://stackoverflow.com/questions/40058551
复制相似问题