如何将角2前置快速 JS 变量导出到角2分量?

共3个回答, 标签: javascript angular typescript express

根据我的研究, 我正在用我的代码做下面的工作。目前, 我得到以下错误在我的控制台, 我不明白为什么。我按行跟踪教程。

任何帮助将不胜感激。我试图从我的例. js 文件中导出 nameid 变量, 以便在角度组件中使用。

angularar-madisp/concontoutes. js

var xmldoc = require('xmldoc');
var DOMParser = require('dom-parser');
module.exports = function (app, config, passport) {

  app.get('/', function (req, res) {
      res.redirect('/home')
  });

  app.get('/login',
    passport.authenticate(config.passport.strategy,
      {
        successRedirect: '/',
        failureRedirect: '/login'
      })
  );

  app.post('/', function(req, res) {
    console.log('body saml:', req.body.SAMLResponse);
    const body = req.body.SAMLResponse;
    var b = new Buffer(body, 'base64');
    let text = b.toString('ascii');
    //var inflated = pako.inflateRaw(b, {to:'string'});
    console.log('formmatted saml',text);
     var document = new xmldoc.XmlDocument(text);
     console.log('formmatted document',document);
     var status = document.descendantWithPath("samlp:Status").firstChild.attr;

   var attr = text.includes("AttributeStatement");
   var nameid = text.substring(text.lastIndexOf("") + 8,text.lastIndexOf(""));
   module.exports.nameid = nameid;
    console.log("status id:", status['Value']);
    console.log(attr);
      console.log('LDAP DB username: ' + nameid);



};

angular-master/src/app/site/user-history/user-history.component.ts

import { Component, OnInit } from '@angular/core';
import { RouterLink } from '@angular/router';
import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { element } from 'protractor';
import { ActivatedRoute } from '@angular/router';
import { Router } from '@angular/router';

var routes = require('./../../../../express/config/routes.js');


@Component({
  selector: 'app-user-history',
  templateUrl: './user-history.component.html',
  styleUrls: ['../style.css']
})
export class UserHistoryComponent implements OnInit {


  constructor(
    private route: ActivatedRoute,
    private router: Router
  ) {}


  ngOnInit() {
      console.log(routes.nameid);


}

我的控制台显示以下错误:

xmldoc.js:5 Uncaught ReferenceError: global is not defined
    at xmldoc.js:5
    at Object../node_modules/xmldoc/lib/xmldoc.js (xmldoc.js:339)
    at __webpack_require__ (bootstrap:76)
    at Object../node_modules/xmldoc/index.js (index.js:3)
    at __webpack_require__ (bootstrap:76)
    at Object../express/config/routes.js (routes.js:1)
    at __webpack_require__ (bootstrap:76)
    at Object../src/app/site/user-history/user-history.component.ts (user-history.component.ts:23)
    at __webpack_require__ (bootstrap:76)
    at Object../src/app/site/site.module.ts (main.js:8001)
(anonymous) @ xmldoc.js:5
./node_modules/xmldoc/lib/xmldoc.js @ xmldoc.js:339
__webpack_require__ @ bootstrap:76
./node_modules/xmldoc/index.js @ index.js:3
__webpack_require__ @ bootstrap:76
./express/config/routes.js @ routes.js:1
__webpack_require__ @ bootstrap:76
./src/app/site/user-history/user-history.component.ts @ user-history.component.ts:23
__webpack_require__ @ bootstrap:76
./src/app/site/site.module.ts @ main.js:8001
__webpack_require__ @ bootstrap:76
./src/app/app.module.ts @ app.component.ts:13
__webpack_require__ @ bootstrap:76
./src/main.ts @ environmentLoader.ts:21
__webpack_require__ @ bootstrap:76
0 @ main.ts:16
_
第1个答案

哦, 你必须使用导入, 而不是要求。

import * as routes from './../../../../express/config/routes.js';
ngOnInit() {
  console.log(routes.nameid);
}

但为什么要在前端调用后端变量呢?它们是分离的服务器

第2个答案

您需要了解, Node js 是一个服务器端框架, 角度是一个前沿框架, 两者都需要编译。

由于两者都是 javascript, 您认为服务器代码可以在前端导入。但安格尔的包 json 和 angularh. json 文件不知道这些程序, 它不会编译它。

角度将以纯 HTML 和 javascript 的形式加载到浏览器中。

您需要创建一个 API 并尝试实现此目的。

第3个答案

global是节点全局对象, 就像 window 在浏览器中一样。它是仅限节点的, 在浏览器环境中不存在。这就解释了错误。

问题是, 快速代码存在于服务器上的 nodejs 运行时。角代码存在于浏览器中。这是两个独立的环境, 不能像您尝试的那样访问彼此的变量。这简直是不可能的。

相关问题

如何从异步调用返回响应? 循环中的 JavaScript 闭包--简单的实际示例 如何从异步调用返回响应? 从 angularcli 中的 HTTP Get 请求检索到的数组的范围 如何将角2前置快速 JS 变量导出到角2分量? Angular block web 请求使用的服务器吗? 在类实例中跟踪状态 如何解决: “找不到规则 '@ typescript-eslint/一致类型断言' 的定义” 如何将月份值从一个日期对象复制到另一个日期对象?[复制] Joi_1.default.validate 不管 基于 node. js 资源的 ACL