Tag: javascript

在沙箱中的服务器上运行不受信任的JavaScript代码

我似乎无法弄清楚如何设置节点沙箱,它可以安全地运行不受信任的代码,并允许用户通过api调用 (sys进出) 与程序进行交互 。 我试图在浏览器中设置一个控制台,让用户从服务器上运行自己的代码。 有没有支持这个节点的软件包,还是我需要编写自己的节点虚拟机? 谢谢。 编辑:我希望用户能够写入readline()并让程序在断点处等待传入的数据。同样, console.log()的输出应该redirect到inputAPI调用的响应。

表示中间件被叫两次

在app.js我做的 const { authMiddleware } = require('./utils/authMiddleware') var app = express(); app.use('/api', authMiddleware, require('./routes/upload-image')) app.use('/api', require('./routes/user')) app.use('/api', authMiddleware, require('./routes/task')) app.use('/api', authMiddleware, require('./routes/credit')) 我有一个简单的console.log authMiddleware.js module.exports.authMiddleware = function(req, res, next) { //res.body.user_id = ) console.log('get logged in user then set user id to body') next() } post image端点就像这个routes / upload-image.js const express = require('express'); const router […]

护照本地的一个node.js应用程序与多个路线文件

我已经成功地遵循这个教程,并做了我的基于Node.js的应用程序。 现在我想添加护照本地支持login一些特定的路线。 我发现关于使用Passport的每个教程都只适用于只有一个path文件的应用程序。 但我有我的路线在多个文件(在app.js ): var index = require('./routes/index'); var config = require('./routes/config'); var about = require('./routes/about'); var run = require('./routes/run'); var device = require('./routes/device'); var user = require('./routes/user'); 例如在routes / config.js中 : router.get('/', server_controller.index); router.get('/server/create', server_controller.server_create_get); router.post('/server/create', server_controller.server_create_post); router.get('/server/:id/delete', server_controller.server_delete_get); router.post('/server/:id/delete', server_controller.server_delete_post); 在routes / device.js中,我们有需要login的路由: router.get('/', device_controller.index); router.get('/change-ip', device_controller.device_edit_ip_get); router.post('/change-ip', device_controller.device_edit_ip_post); 那么我应该如何在这些不同的path文件中使用护照本地中间件? 更新 :在routes […]

这是正常的bluebird / node.js / expresserror handling?

所以,我做了这个愚蠢的错字,花了我相当多的时间来find它,因为我总是从执行mongoose查询中得到一个空的错误。 我重新创build了一个更通用的行为。 var express = require('express'); var router = express.Router(); var Promise = require('Bluebird'); router.patch('/test', function (req, res, next){ var testPromise = new Promise(function (resolve, reject) { resolve(); }) .then(function(result){ if(thisIsAnExampleTypo){} res.status(200).json({ message: 'this will no be executed because of the typo', object: result }); }) .catch(function(err){ //console.log(err); return res.status(500).json({ title: 'This will execute because […]

Nuxt.js与护照失去req.user

我正在努力使用Nuxt.js和Passport.js Node.js应用程序。 我用vuexlogin并设置用户数据。 行动: nuxtServerInit ({ commit }, { req }) { if (req.session && req.session.authUser) { commit('SET_USER', req.session.authUser) } } 突变: SET_USER: function (state, user) { state.authUser = user } 它工作正常,但是当我试图访问页面,只能通过loged用户访问出现问题。 axios.get('http://localhost:3000/api/articles/add') router.get('/api/articles/add', ensureAuthenticated, (req, res) => { res.send({ title: 'Add Article' }) }) function ensureAuthenticated (req, res, next) { if (req.isAuthenticated()) { return […]

node.js修改文件数据stream?

我需要修改一个大的数据文件到另一个目的地。 fs.readFile和fs.writeFile非常慢。 我需要逐行阅读,修改并写入新文件。 我发现这样的事情: fs.stat(sourceFile, function(err, stat){ var filesize = stat.size; var readStream = fs.createReadStream(sourceFile); // HERE I want do some modifications with bytes readStream.pipe(fs.createWriteStream(destFile)); }) 但如何进行修改? 我试图用data事件获取数据 readStream.on('data', function(buffer){ var str = strToBytes(buffer); str.replace('hello', ''); // How to write ??? }); 但不知道如何写入文件:

Express.js + body-parser:POST请求中的空req.body

我正在使用Express和body-parser中间件来处理传入的请求。 在前端,我有一个表单,只是一个隐藏的input和一个提交button(写在帕格): form(notes="saveNotesForm" action=`/lessons/${lesson._id}/notes` method="POST" enctype="application/x-www-form-urlencoded") input(type="hidden" id="hiddenNotes" name="hiddenNotes" alt="Notes Copy" value="test").notesHidden input(type="submit" name="saveNotes" alt="Save Notes" value="Save") 在后端,我有Express应用程序使用body-parser: const bodyParser = require('body-parser'); // … app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); 处理传入请求的路由: router.post('/lessons/:lessonID/notes', lessonController.updateNotes); // … and in lessonController: exports.updateNotes = async (req, res) => { console.log('updateNotes request received'); console.log(req.body); res.status(200).json({ status: 'success' }); } 当我尝试在req.body中使用req.body时,body是一个空对象,但是至less应该具有值为"test" hiddenNotes属性。 […]

使用Google云端存储在Express中的字节范围

我正在使用谷歌云存储托pipe我的媒体。 我一直试图通过我的Express应用程序让Chrome浏览器正确缓冲audio。 然而,我似乎无法弄清楚如何正确设置谷歌云存储stream的字节范围,导致Chrome拒绝。 我使用快速范围来获取所需的范围,并使用Google的官方库与GCS进行交互。 const file = bucket.file(source.path); const stream = file.createReadStream({ 'start': req.range.first, 'end': req.range.last, }); stream.pipe(res); 这导致Chrome拒绝stream式传输audio(在标签中查看播放器时灰屏),我不明白为什么。 我也得到这个警告: 你可以在这里testingaudio(这是一个ngrok隧道) 编辑:我结束了使用send-seekable这为我的用例工作。 不过,我不确定它是否会对性能有好处,因为它不会在GCS请求上设置字节范围,这意味着很可能整个资源都被提取(除非我误解了stream的工作原理)

在Node JS中执行代码时,不能通过命令访问文件

我在节点运行时创build一个文件[HTML],并通过命令行将其转换为PDF。 HTML创build成功,甚至PDF文件也创build成功,但空。 我检查了创build的HTML文件包含数据,但命令行无法读取,我猜。 这是我的代码: 创buildHTML文件: var getPdf=function (html,fileName,callback) { fs.writeFile("./pdf/"+fileName+".html", html,'utf8', function(err) { if(err) { return callback(err,[]); } fs.readFile("./pdf/"+fileName+".html","utf8", (err, data) => { if (err) throw err; console.log(data); }); return callback(err,fileName); }); } 创buildHTML后创buildPDF var html="<html><head><title>Hello World</title></head><body><h1>Hello Sarath!</h1></body></html>"; getPdf(html,'sarath',function (err, fileName) { if(err) { console.log("Error: "+err); return false; } var cmd="xvfb-run wkhtmltopdf ./pdf/"+fileName+" ./pdf/"+fileName+".pdf"; console.log(cmd); […]

SourceMapDevToolPlugin在webpack中运行得很好。 它不接pipedevtool工作

当我设置devtool:'source-map'并应用SourceMapDevToolPlugin时 ,SourceMapDevToolPlugin不会接pipedevtool选项并生成两个不同的源地图。 webpack.config.js: const path = require('path'); const webpack = require('webpack'); const CleanWebpackPlugin = require('clean-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); var config = { context: path.resolve( __dirname, 'src'), entry:{ test1: 'test.js' }, output: { filename: 'js/[name].js?=[chunkhash]', path: path.resolve( __dirname, 'dist'), devtoolModuleFilenameTemplate: '[absolute-resource-path]', sourceMapFilename: 'srcMap/[file].map' }, module: { rules: [ { test: /\.jsx?$/, exclude: /node_modules/, use: [ […]