天道酬勤,学无止境

express

使用 expressjs 时下载的 .pdf 文件已损坏(Downloaded .pdf files are corrupted when using expressjs)

问题 我正在使用 https://github.com/DaftMonk/generator-angular-fullstack 生成meanjs应用程序。 我正在尝试使用phantomjs生成一个 .pdf 文件并将其下载到浏览器。 问题是下载的 .pdf 文件总是显示空白页,而不管页数如何。 服务器上的原始文件没有损坏。 当我进一步调查时,发现下载的文件总是比磁盘上的原始文件大得多。 此外,此问题仅发生在 .pdf 文件中。 其他文件类型工作正常。 我尝试了几种方法,如res.redirect('http://localhost:9000/assets/exports/receipt.pdf'); , res.download('client\\assets\\exports\\receipt.pdf') , var fileSystem = require('fs'); var stat = fileSystem.statSync('client\\assets\\exports\\receipt.pdf'); res.writeHead(200, { 'Content-Type': 'application/pdf', 'Content-Length': stat.size }); var readStream = fileSystem.createReadStream(

2021-09-20 00:16:24    分类:技术分享    angularjs   node.js   express   mean-stack

如何从 HTML 中的节点模块引用 js 文件?(How do I reference a js file from a node module in HTML?)

问题 我使用 JetBrains WebStorm 创建了一个 Node.js Express 应用程序。 我使用 npm(通过 File->Settings->Node.js 和 NPM)来安装一个名为 validator 的包,用于字符串验证。 该软件包安装在node_modules下,这很好。 如果我做var validator = require('validator'); 在我的服务器代码中,我可以成功使用验证功能。 问题是我还想在客户端 JavaScript 中使用验证器。 我可以包含这样的脚本: <script src="/javascripts/xss-filters.min.js"></script> 但这意味着我必须将xss- filters.min.js从node_modules文件夹复制到公共javascripts文件夹中。 然后,如果我使用 npm 更新包,文件将不同步。 有什么方法可以从我的视图中引用node_modules ,或者创建某种链接文件或文件引用之类的? 我宁愿不必手动维护它。 回答1 您应该考虑使用 browserify,它允许您通过构建所有依赖项来要求浏览器中的模块。 所以基本上你编码就像你在服务器端 http://browserify.org 回答2 您可以使用另一个名为 node-browserify 的 node.js 模块来完成

2021-09-19 20:10:04    分类:技术分享    javascript   node.js   express   npm   webstorm

如何从 HTML 中的节点模块引用 js 文件?(How do I reference a js file from a node module in HTML?)

问题 我使用 JetBrains WebStorm 创建了一个 Node.js Express 应用程序。 我使用 npm(通过 File->Settings->Node.js 和 NPM)来安装一个名为 validator 的包,用于字符串验证。 该软件包安装在node_modules下,这很好。 如果我做var validator = require('validator'); 在我的服务器代码中,我可以成功使用验证功能。 问题是我还想在客户端 JavaScript 中使用验证器。 我可以包含这样的脚本: <script src="/javascripts/xss-filters.min.js"></script> 但这意味着我必须将xss- filters.min.js从node_modules文件夹复制到公共javascripts文件夹中。 然后,如果我使用 npm 更新包,文件将不同步。 有什么方法可以从我的视图中引用node_modules ,或者创建某种链接文件或文件引用之类的? 我宁愿不必手动维护它。 回答1 您应该考虑使用 browserify,它允许您通过构建所有依赖项来要求浏览器中的模块。 所以基本上你编码就像你在服务器端 http://browserify.org 回答2 您可以使用另一个名为 node-browserify 的 node.js 模块来完成

2021-09-19 20:08:04    分类:技术分享    javascript   node.js   express   npm   webstorm

如何从 HTML 中的节点模块引用 js 文件?(How do I reference a js file from a node module in HTML?)

问题 我使用 JetBrains WebStorm 创建了一个 Node.js Express 应用程序。 我使用 npm(通过 File->Settings->Node.js 和 NPM)来安装一个名为 validator 的包,用于字符串验证。 该软件包安装在node_modules下,这很好。 如果我做var validator = require('validator'); 在我的服务器代码中,我可以成功使用验证功能。 问题是我还想在客户端 JavaScript 中使用验证器。 我可以包含这样的脚本: <script src="/javascripts/xss-filters.min.js"></script> 但这意味着我必须将xss- filters.min.js从node_modules文件夹复制到公共javascripts文件夹中。 然后,如果我使用 npm 更新包,文件将不同步。 有什么方法可以从我的视图中引用node_modules ,或者创建某种链接文件或文件引用之类的? 我宁愿不必手动维护它。 回答1 您应该考虑使用 browserify,它允许您通过构建所有依赖项来要求浏览器中的模块。 所以基本上你编码就像你在服务器端 http://browserify.org 回答2 您可以使用另一个名为 node-browserify 的 node.js 模块来完成

2021-09-19 20:06:05    分类:技术分享    javascript   node.js   express   npm   webstorm

angular ui-router, html5 模式总是刷新到 /(angular ui-router, html5 mode always refreshes to /)

问题 我试图在 angular 中使用 html5mode,以便我可以为 http:/myhost/products 之类的页面添加书签(其中 /products 是由 $stateProviderRef.state(xxx) 定义的路由)。 为此我已经 将$locationProvider.html5Mode(true)添加到我的应用程序配置中将 'base href="/"'(带有 <>)添加到我的 index.html 在 node.js 中将 catch all rewrite 添加到我的 server.js app.get('*', function(req, res) { res.redirect('/'); }); 重新启动节点服务器 所以发生的情况是应用程序启动正常,所有导航正常,我可以访问 http://myhost/products 并且一切正常。 但是,如果我此时按刷新,我将被重定向回索引页面。 在我看来,ui-router 要么丢失了路径(/products),要么我在配置/设置中遗漏了一些东西 我一直在浏览 StackOverflow 上的问题,直到我的眼睛都流血了,但类似问题的所有解决方案都是我已经做过的事情(base=、重定向等) 其他人有这个问题并解决了吗? 如果您能分享您的发现,将不胜感激。 谢谢 回答1 你不应该像那样在服务器中重定向 app

2021-09-19 19:43:55    分类:技术分享    angularjs   node.js   express   angular-ui-router

邮递员 - 发布应用程序/json 数据(postman - post application/json data)

问题 如何通过邮递员发送应用程序/json 数据,以便我可以在 nodejs 服务器中接收与 req.body 相同的数据。 我在邮递员中尝试过原始正文 json,它将数据作为应用程序/json 发送,但数据在服务器中作为 req.rawBody 可用。 我需要在 req.body 中得到相同的结果。 有没有这样的选择 回答1 单击 x-www-form-urlencoded 选项卡并输入正文。 现在您可以在后端使用req.body接收正文。 回答2 首先,您必须选择支持“POST”、“PUT”或“PATCH”等主体的 http 方法。 因为“GET”和“DELETE”不支持主体。 然后您选择“原始”数据类型并粘贴/键入您的 JSON 数据。 回答3 这可能会解决您的问题。 你在你的主 .js 文件中尝试过这个吗? app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); 回答4 只需在服务器文件中使用以下语法 const bodyParser = require('body-parser') const cors = require('cors'); app.use(cors()) // for crossOrigin Access app.use(bodyParser

2021-09-19 19:10:37    分类:技术分享    json   node.js   express   postman

无法读取未定义的属性“__reactAutoBindMap”(Cannot read property '__reactAutoBindMap' of undefined)

问题 在过去的一周里,我完全不知道如何使用 React 设置服务器端渲染。 这是一个新项目,但它是一个快速服务器,我正在尝试渲染一个使用 react-router-component 的超级简单的 hello world react 应用程序.. 我认为获得帮助的最佳方式是分享我现在拥有的代码,我希望有人能告诉我我做错了什么! 我按照教程一个接一个地学习并尝试了各种不同的东西,但我一个接一个地出错! 这是我用于 express 服务器的 app.js,如果向下滚动一点,相关代码是 * 路由: require('node-jsx').install({extension: '.jsx'}); var React = require('react'); var App = require('./src/App.jsx'); var request = require('superagent'); var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser =

2021-09-19 15:54:11    分类:技术分享    javascript   node.js   express   reactjs   reactjs-flux

使用回调的 Express.js 执行流程(Express.js execution flow using callbacks)

问题 我对 express.js 应用程序的执行流程有很大的疑问,其中有对数据库的异步请求。 我已经阅读了 Node.js 架构,我知道当我执行阻塞请求(如数据库请求)时,请求是在一个线程上执行的,当请求得到满足时,添加工作(回调函数的代码)为阻塞请求指定)在事件队列中。 现在...由于我使用 mongoDb 作为应用程序数据库,并且由于 mongodb 不提供执行同步请求的方法,我如何确保在查询完成之前不执行对客户端的响应? 例如,在这种情况下,我有一个请求处理程序(不是中间件): app.all("/",function(req,res){ db.find({},function(err,doc){ //Retreive certain informations from the db needed by the client }); }); app.all("/",function(req,res){ res.status(200).end(); }); 这是一个使用express.js和mongodb的常见例子... 但是执行流程实际上是如何进行的呢? 对于中间件,我没有这个疑问,因为执行流程会停止,直到调用 next() 方法(您可以在数据库回调中调用它)。 提前致谢, 卢卡 M。 回答1 由于您提到next()这里是如何链接中间件的基本示例: function

2021-09-19 14:52:01    分类:技术分享    node.js   asynchronous   express

用multer重命名文件不起作用(Rename a file with multer is not working)

问题 我正在尝试使用 multer 重命名文件。 我想重命名上传到 .jpg 的文件而不是关于 multer 的教程,我在我的路由文件中调用方法重命名。 文件上传得很好,但我不明白为什么函数重命名不起作用。 顺便说一句,“ici”这个词没有出现在我的控制台中 router.post('/edit/saveEdit',multer({ rename : function(fieldname, filename, req, res) { console.log('ici'); return req.body.infoUser.id }}), function(req,res){ // console.log(req.body); // console.log(JSON.stringify(req.files)); var conf = JSON.parse(fs.readFileSync(file_user)); var user = req.body.infoUser; //changement de nom de fichier // console.log(req.files.uploadAvatar); 感谢您的回答/帮助 Thibault res.end('good'); 回答1 它对我有用,代码如下: var multer = require('multer') var

2021-09-19 12:10:30    分类:技术分享    node.js   express   multer

使用 SailsJS/Express 在请求之间保持对象在内存中(Keep Object In Memory Between Requests with SailsJS/ Express)

问题 我正在使用SailsJS (一个构建在 Express 之上的框架)构建一个服务器,我需要在请求之间在内存中保留一个对象。 我想这样做是因为将它加载到/从数据库加载时间太长。 任何想法我怎么能做到这一点? 这是我的代码: var params = req.params.all(); Network.findOne({ id: params.id }, function(err, network) { if(network) { var synapticNetwork = synaptic.Network.fromJSON(network.jsonValue); if(synapticNetwork) { ... 具体来说, fromJSON()函数花费的时间太长,我宁愿在服务器运行时将synapticNetwork对象保留在内存中(也就是在服务器启动时加载它并定期保存)。 回答1 有很多用于缓存目的的库,其中之一是您提到的节点缓存。 他们都共享类似的api: var cache = require('memory-cache'); // now just use the cache cache.put('foo', 'bar'); console.log(cache.get('foo')) 您还可以实现自己的模块,并在任何需要的地方使用它: var cache = {}

2021-09-19 10:12:07    分类:技术分享    node.js   express   sails.js