javascript - 如何从 server.js 调用 node.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) 时出现此错误,因为该函数是 promise 类型。这是做我想做的事情的另一种方式吗?这通常是如何完成的?谢谢
解决方案
- 不要使用
bodyParser
,因为它已被弃用,更改:
app.use(bodyParser.json());
至:
app.use(express.json());
app.use(express.urlencoded({ extended: true }))
- 添加
cors
启用 CORS 请求,安装运行命令:
npm i cors
并且在路由定义之前的代码中:
const cors = require('cors')
app.use(cors())
推荐阅读
- typescript - 将项目切换到 TypeScript 会导致文件观察者的数量达到限制
- python - 参数过长异常删除 10k 文件-Python -HDFS
- angular - 在 ng bootstrap datepicker(范围选择器)中突出显示日期/周
- android - 整理 gradle 依赖的顺序
- c++ - 如何根据异常类防止终止处理程序中止
- tensorflow - Tensorflow 损失值看似与计算损失无关
- android - 如何获得像twitter这样的分段控制?
- c++ - 将 C++14 与 AVR-GCC (Arduino Uno) 一起使用
- laravel - 将一段 laravel livewire 代码转换为 Facade 或 trait
- python - 如果数字跟随以使用 python/pyspark 获取数组,则跳过 (" ") 上的拆分