![](/img/trans.png)
[英]How to create a custom module for Node-Red for use require statement of node and require npm modules inside flows
[英]Require custom module with npm and typescript
让我们玩两个项目: main-project和lib-project都用打字稿编写,然后使用gulp编译为通用javascript。
我们的目标是在main-project中需要lib -project 。
lib项目
|-- package.json
|-- gulpfile.js
|-- dist
|-- index.js
|-- a.js
| src
|-- index.ts
|-- a.ts
我们创建了那些从ts编译它们的js; 让我们快速看一下它们(我们有索引,因为我们最终想要这么多的出口)
索引
import a = require('./a');
module.exports = {A: a.A};
a.ts
export class A {
field: string;
constructor(aField: string) {this.field = aField;}
toString() : string {return `A: ${this.field}`;}
}
index.js
var a = require('./a');
module.exports = { A: a.A };
a.js
var A = (function () {
function A(aField) {
this.field = aField;
}
A.prototype.toString = function () {
return "A: " + this.field;
};
return A;
})();
exports.A = A;
那是介绍; 现在,我将其推送到git仓库,并在package.json中将其作为依赖项 ,然后运行npm install
,我们的主要项目是:
主项目
|-- package.json
|-- gulpfile.js
|-- node_modules
|--lib-project
|-- dist
|-- index.js
|-- a.js
|--node
|...
|--src
|--app.ts
在app.ts中失败了: cannot find module lib-project
应用程序
import a = require('lib-project');
var foo = new a.A('HELLO');
console.log(foo.toString());
我尝试了什么?
"main": "dist/index.js"
import a = require('node_modules/lib-project/dist/index');
import a = require('../node_modules/lib-project/dist/index');
任何帮助表示赞赏:)
编辑
package.json
{
"name": "lib-project",
"version": "0.1.0",
"description": "description here",
"main": "dist/index.js",
"scripts": {},
"author": "",
"license": "MIT",
"dependencies": {
}
}
我相信您所缺少的是lib-project.d.ts
根目录中的lib lib-project.d.ts
文件。 这将填补您在index.ts中已经拥有的角色,但是您需要对其进行一些微调以填补该角色
|-- package.json
|-- gulpfile.js
|-- lib-project.d.ts <-- formerly index.ts
|-- dist
|-- a.js
| src
|-- a.ts
lib-project.d.ts如下所示:
declare module 'lib-project' {
import a = require('./a');
export = {A: a.A};
}
然后在消费时可以使用:
import {A} from 'lib-project';
您可以参考我在这里所做的导出操作: https : //github.com/Brocco/ng-bridge
并导入: https : //github.com/Brocco/ng-bridge-samples/blob/master/app/app.ts#L1
您可能要参考: TypeScript:从node_modules导入外部模块
要点:使用tsc --module commonjs --declaration index.ts
编译,然后在导入时使用以下命令:
/// <reference path="node_modules/lib-project/index.d.ts" />
import a = require('lib-project');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.