NPM-MQTT Angular2需要

时间:2017-02-07 18:36:02

标签: node.js angular mqtt

我无法将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
    }
}

2 个答案:

答案 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');