我无法将https://www.npmjs.com/package/mqtt集成到我的angular2打字稿项目中(使用angular-cli创建)。
使用var mqtt = require('mqtt');
会产生错误Cannot find name 'require'
因此,我尝试使用import(通常情况下)将其添加到modules.ts:
import { mqtt } from 'mqtt/mqtt';
...
imports: [
BrowserModule,
FormsModule,
HttpModule,
mqtt
],
我也尝试使用import { MQTT } from 'mqtt/mqtt';
和import { MqttClient } from 'mqtt/mqtt';
(最后一个在mqtt.js中导出
我甚至尝试在类文件中导入它们。
我很确定这对我来说是一个微不足道的错误,但我无法理解它。
(注意:“@ types / node”:“^ 7.0.0”也已安装,因此this也不起作用)
我的tsconfig:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"isolatedModules": false,
"jsx": "react",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"declaration": false,
"noImplicitAny": false,
"noImplicitUseStrict": false,
"removeComments": true,
"noLib": false,
"preserveConstEnums": true,
"suppressImplicitAnyIndexErrors": true
},
"exclude": [
"node_modules",
"typings/browser",
"typings/browser.d.ts"
],
"compileOnSave": false,
"buildOnSave": false,
"atom": {
"rewriteTsconfig": false,
"formatOnSave": true
}
}
答案 0 :(得分:0)
导入语句不正确;如果您是从Typescript文件中从通用Javascript模块导入的,则可以将其全部导入-这可与具有某些导出功能的任何Javascript库一起使用:
import * as mqtt from 'mqtt';
let client = mqtt.connnect('mqtt://hostname.example.com');
如果模块是用Typescript编写的,或者您在devDependencies
的{{1}}中也添加了类型,则可以导入一些导出的字段:
package.json
对于这个模块,似乎它内置了类型,因此您可以导入模块的特定部分。
在您的示例中,您实际上是在尝试从import { connect } from 'mqtt';
let client = connect('mqtt://hostname.example.com');
模块的mqtt
子文件夹导入mqtt
符号,该符号可能不存在,因此会失败。
希望有帮助!
答案 1 :(得分:0)
阅读有关在ts Documentation中使用它的建议文档
import { connect } from 'mqtt';
const client = connect('wxs://test.mosquitto.org');