首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在angular 2 tapp中加载node-java库?

如何在angular 2 tapp中加载node-java库?
EN

Stack Overflow用户
提问于 2017-02-24 08:15:42
回答 1查看 587关注 0票数 0

我正在使用https://github.com/angular/quickstart

代码语言:javascript
复制
npm install
npm install java --save
node node_modules/java/postInstall.js
npm install @types/java --save-dev

package.json

代码语言:javascript
复制
"dependencies": {
    ...
    "java": "^0.8.0",
    ...
},
"devDependencies": {
    ...
    "@types/java": "^0.7.31",
    ...
},

这就是我在systemjs.config.js中添加库的方式

代码语言:javascript
复制
map: {
  ...
  'java': 'npm:java/lib/nodeJavaBridge.js'
},

当我运行npm start时,输出是

终端:

代码语言:javascript
复制
304 GET /java/lib/nodeJavaBridge.js
304 GET /java/build/jvm_dll_path.json

404 GET /lodash
404 GET /async
404 GET /path
404 GET /fs

Chrome开发工具控制台:

代码语言:javascript
复制
http://localhost:3000/lodash Failed to load resource: the server responded with a status of 404 (Not Found)

ZoneAwareError__zone_symbol__error: Error: (SystemJS) XHR error (404 Not Found) loading http://localhost:3000/lodash
    Error: XHR error (404 Not Found) loading http://localhost:3000/lodash
        ...
    Error loading http://localhost:3000/lodash as "lodash" from http://localhost:3000/node_modules/java/lib/nodeJavaBridge.js
        ...

http://localhost:3000/async Failed to load resource: the server responded with a status of 404 (Not Found)
http://localhost:3000/path Failed to load resource: the server responded with a status of 404 (Not Found)
http://localhost:3000/fs Failed to load resource: the server responded with a status of 404 (Not Found)

测试我可以加载node-java并运行java代码的代码类似于:

代码语言:javascript
复制
import { Component, OnInit} from '@angular/core';
import * as java from 'java';

@Component({
  selector: 'my-app',
  template: `<h1>Hello {{name}}</h1>`,
})
export class AppComponent  implements OnInit { 
    name = 'Angular';

    ngOnInit() {
        var sys = java.import('java.lang.System');
        sys.out.printlnSync('Hello from java :)'); // outputs to terminal
        var list1 = java.newInstanceSync("java.util.ArrayList");
        console.log(list1.sizeSync()); // 0
        list1.addSync('item1');
        console.log(list1.sizeSync()); // 1
    }
}

但是由于缺少库,代码永远不会被调用。

node_modules/java/lib/nodeJavaBridge.js包含以下行:

代码语言:javascript
复制
var _ = require('lodash');
var async = require('async');
var path = require('path');
var fs = require('fs');

如何在angular 2快速入门应用程序中正确加载node-java库?

EN

回答 1

Stack Overflow用户

发布于 2017-02-24 12:09:00

SystemJS不知道如何加载这些节点java依赖项,您需要告诉它在systemjs.config.js文件中的何处可以找到这些依赖项,例如:

代码语言:javascript
复制
map: {
  ...
  'java': 'npm:java/lib/nodeJavaBridge.js',
  'lodash': 'npm:lodash/lodash.js',
  'async': 'npm:...',
  'path': 'npm:...',
  'fs': 'npm:...',
},
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42428609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档