electron как перенаправить данные с узла на angular 7

#javascript #node.js #angular #electron

#javascript #node.js #angular #electron

Вопрос:

Я сгенерировал приложение Angular 7, которое работает по адресуhttp://localhost:4200 У меня есть приложение в Node JS, которое отвечает за аутентификацию пользователя на Facebook, запущенное по адресу http://localhost:3000

там перенаправление обратного вызова работает корректно

index.js (узел)

 //facebook
const FACEBOOK_APP_ID = 'xxx';
const FACEBOOK_APP_SECRET = 'xxx';

passport.use(new FacebookStrategy({
  clientID: FACEBOOK_APP_ID,
  clientSecret: FACEBOOK_APP_SECRET,
  callbackURL: "/auth/facebook/callback"
},
function (accessToken, refreshToken, profile, cb) {
  return cb(null, profile, accessToken);
}
));

app.get('/auth/facebook',
  passport.authenticate('facebook'));


app.get('/auth/facebook/callback',
  passport.authenticate('facebook', {
    failureRedirect: 'http://localhost:4200/login'
  }),
  function (req, res) {
    res.redirect('http://localhost:4200/main'   req.authInfo);
  });

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`server en port ${port}`)
});
  

app.modules.ts

 const appRoutes: Routes = [{
    path: '',
    component: LoginComponent,
  },
  {
    path: 'login',
    component: LoginComponent,
  },
  {
    path: 'main/:token',
    component: MainComponent,
  },
  {
    path: '',
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path: '**',
    component: Error404Component
  },
];
  

main.js (electron)

 const url = require('url');
const path = require('path');
const fs = require('fs');
const {
  app,
  BrowserWindow,
  Menu,
  dialog
} = require('electron');
const openAboutWindow = require('about-window').default;

let win;
let menu;

const application_menu = [{
    label: 'Archivo',
    submenu: [{
      label: 'Salir',
      accelerator: 'Command Q',
      click: () => {
        app.quit();
      }
    }, ]
  },
  {
    label: 'Configuración',
    submenu: [{
      label: 'Carpetas',
      accelerator: 'CommandOrControl o',
      click: () => {
        openFolderDialog()
      }
    }]
  },
  {
    label: 'Ayuda',
    submenu: [{
        label: 'Documentación',
        click() {
          require('electron').shell.openExternal('https://electronjs.org')
        }
      },
    ]
  }
];


function createWindow() {
  let nd = require('./api/index.js');

  menu = Menu.buildFromTemplate(application_menu);
  Menu.setApplicationMenu(menu);

  win = new BrowserWindow({
    width: 800,
    height: 600,
    show: false,
    icon: __dirname   '/icons/batman.ico'
  });

  win.loadFile('./dist/UI/index.html');

  win.webContents.openDevTools()

  win.once('ready-to-show', () => {
    win.show()
  })

  win.on('closed', function () {
    win = null;
  });
};

app.on('ready', createWindow);

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
});

app.on('activate', () => {
  if (win === null) {
    createWindow()
  }
});
  

При попытке включить это в Electron я могу вызвать функции узла, но я не могу перенаправить данные на angular

Я пробовал с file: /// и это тоже не работает, также не выдает ошибку

Я ценю вашу помощь

Комментарии:

1. Как вы отображаете содержимое angular в electron? Можете ли вы добавить образец? Используете ли вы webview? Или вы интегрируете angular в electron?

Ответ №1:

Я думаю, вы должны вернуть ответ JSON и принять решение в приложении electron на основе JSON, прошла ли авторизация или нет. Потому что отправной точкой angular, которая его обслуживает, является приложение electron, и я думаю, что вы не можете перенаправить таким образом.

Комментарии:

1. Внешняя переадресация CORS-запроса не разрешена На запрос CORS сервер ответил HTTP-перенаправлением на URL-адрес, отличающийся от исходного запроса, что запрещено во время CORS-запросов. Чтобы устранить проблему, обновите свой код, чтобы использовать новый URL, указанный в перенаправлении, тем самым избегая перенаправления. Читать дальше