簡體   English   中英

如何從 server.js 調用 node.js 庫?

[英]How to call node.js libraries from server.js?

我是 node.js 的新手。 我有一個應用程序角度前端和 node.js 服務器。 還有一個我正在嘗試獲取數據的 js 庫。

我想要做的是用戶將按下一個按鈕並將數據傳遞給服務器。 服務器將數據傳遞給 node.js 庫,庫將數據返回給服務器。 服務器將向用戶發回數據。

我試圖從 angular 前端調用 js 庫作為腳本。 但是因為 webpack 高於 5,所以有很多錯誤。

node.js 文件:


const Mam = require('@iota/mam')
const { asciiToTrytes, trytesToAscii } = require('@iota/converter')

const mode = 'private'
const provider = 'https://nodes.devnet.iota.org'
const sidekey= 'hf8685nfhfhjs9h8'
let mamState = Mam.init(provider)

const checkMam = async root=>{
  const result = await Mam.fetch(root, mode)
  result.messages.forEach(message => console.log('Fetched and parsed', JSON.parse(trytesToAscii(message)), '\n'))

return result.messages;
}
module.exports = { checkMam };

server.js 文件:


const express = require('express');
const MAM_listen = require("./MAM_listen");

const app = express(),
      bodyParser = require("body-parser");
      port = 3080;

const users = [];
const root ='YQKXWPSBRHZXEMDUMGEHVYJKSKZVNCIBEDPYMURKLRIOOYHBCRTGGOSFGPOVSHCXIXMKKSFJIAUL9XPJZ';

app.use(bodyParser.json());
app.use(express.static(process.cwd()+"/my-app/dist/angular-nodejs-example/"));

app.get('/api/users', (req, res) => {
  MAM_listen.checkMam(root).then((value) => console.log(value))
  res.json(users);
});

app.post('/api/user', (req, res) => {
  const user = req.body.user;
  users.push(user);
  res.json("user add");
});

app.get('/', (req,res) => {
  res.sendFile(process.cwd()+"/my-app/dist/angular-nodejs-example/index.html")
});

app.listen(port, () => {
    console.log(`Server listening on the port::${port}`);
});

當我從 app.get 調用 (MAM_listen.checkMam) 時出現此錯誤,因為該函數是承諾類型。 這是做我想做的事情的另一種方式嗎? 這通常是如何完成的? 謝謝

錯誤

  1. 不要使用bodyParser因為它已被棄用,請更改:
app.use(bodyParser.json());

到:

app.use(express.json());
app.use(express.urlencoded({ extended: true }))
  1. 添加cors以啟用 CORS 請求,安裝運行命令:
npm i cors

並且在您的代碼中路由定義之前:

const cors = require('cors')

app.use(cors())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM