Tag: 表示

匹配API和同构路线

我有一个同构的应用程序快速运行: app.get('*', (req, res) => { match( { routes, location: req.url }, (error, redirectLocation, renderProps) => { … } 目前我在通配符上进行匹配,因为这是我见过的大多数样板和教程中所采用的方法。 现在这个问题是我需要能够匹配特定的路线,如/auth和/api需要以不同的方式处理同构的应用程序的路线。 即/auth路由需要authentication用户。 我需要一种方式来指定这些路线,但仍然保持通配符匹配的路线使用我的同构的应用程序。 我已经考虑过,不是使用通配符匹配器,而是可以将同构应用程序的所有路由收集到一个数组中,并用它来表示: const isoRoutes = ['/home', '/about']; app.get([isoRoutes], (req, res)) 我不确定是否有更好的方法来达到这个目的?

为什么下面的处理程序被识别为404处理程序

我正在通过快递生成器生成的app.js ,并有以下代码: app.use('/', index); app.use('/users', users); // catch 404 and forward to error handler app.use(function (req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); 我的问题是为什么最后一个中间件函数被识别为一个函数,执行的时候not found应该返回的错误? 它是基于这样的假设:如果调用这个函数,就意味着没有其他中间件/路由器函数用res.send()完成处理请求,因此对请求不感兴趣,所以可能没有处理请求的处理程序? 如果是这样的话,应该总是最后添加404处理函数,是正确的吗?

在Node / Express中重新加载 – “没有这样的表:main.User”错误

我试图用Sequelize构build一个简单的Node / Express应用程序,但是当我尝试在关系数据库中创build新logging时,出现错误Unhandled rejection SequelizeDatabaseError: SQLITE_ERROR: no such table: main.User 。 基本上,我在Users表中创build一个用户,然后尝试在Addresses表中创build一个相关的Addresses – 用户成功创build,但它创build地址时出现此错误…在哪里得到main前缀从表名? (完整的错误读数在下面)… 首先,这里是我的节目的简介… 我的Sequelize版本是Sequelize [Node: 6.8.1, CLI: 2.4.0, ORM: 3.29.0] ,我使用Sequelize CLI命令sequelize init来设置我的项目的这一部分。 我正在使用SQLite3进行本地开发,并在config/config.json我有开发数据库定义为 "development": { "storage": "dev.sqlite", "dialect": "sqlite" } 我的用户迁移: 'use strict'; module.exports = { up: function(queryInterface, Sequelize) { return queryInterface.createTable('Users', { id: { allowNull: false, autoIncrement: true, primaryKey: true, […]

在Express服务器上使用react-router

我有一个简单的Express服务器正在服务的React应用程序。 React应用程序正在被webpack放到我的根目录( server.js文件所在的位置)的一个名为dist目录中。 dist文件夹包括index.html入口点, main.min.js JavaScript包以及所有其他静态资源(css,图像等)。 如果我访问该站点的根目录localhost:3000/例如, index.html得到服务,它加载JS捆绑并发现所有其他资产罚款。 该应用程序,使用react-router ,通过button点击和一个链接,使我到localhost:3000/feature正常工作正常导航。 但是,如果手动进入地址栏并键入localhost:3000/feature ,则服务器会按照预期提供index.html ,但也会用index.html代替main.min.js 这是因为快速服务器中的通配符路由被映射为返回index.html 。 这是我在一些文章中看到的,但是我不确定这个案子是否被考虑过。 以下是相关服务器代码的一部分: app.use(express.static(path.join(__dirname))); app.get('*', function response(req, res) { res.sendFile(path.join(__dirname, 'dist', 'index.html')); }); 这是什么定义服务器路由。 有没有更好的方法来做到这一点,将允许手动地址更改? 这是我的文件结构,如果有帮助: |-root |-server.js |-webpack.config.js |-dist/ |-main.min.js |-index.html |-a2cea76fae187add3c974dcacf446eab.jpg |-…etc index.html内容: <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> […]

电子和socketsio无法closures窗口

我开始与NodeJS和Socket io聊天应用程序项目,一切都很好。 后来我决定把我的应用程序添加到Electron框架中,聊天开始在一个窗口中,但是我不能closures这个窗口,退出button什么也不做。 经过对我的代码的一些研究,以了解问题的来源,我删除了我的main.html中的socket.io.js行,然后我可以closures我的应用程序,但肯定我的客户端WebSocket停止工作。 <script src="/socket.io/socket.io.js"></script> 这是我的main.js中的createWindow函数。 function createWindow () { // Instantiate Express App app.server = require(__dirname + '/app/app')(); // Create the browser window. win = new BrowserWindow(); // win.maximize(); // and load the index.html of the app. win.loadURL('http://localhost:'+config.server.port); // Open the DevTools. // win.webContents.openDevTools(); win.focus(); // Emitted when the window is closed. win.on('closed', […]

AWS Lambda:模块初始化错误:TypeError

我正在尝试部署AWS lambda函数,并使用express编写代码: 码: var express = require('express'); var bodyParser = require('body-parser'); var lampress = require('lampress'); var request = require('request'); var app = express(); app.set('port', (process.env.PORT || 5000)); // Process application/x-www-form-urlencoded app.use(bodyParser.urlencoded({extended: false})); // Process application/json app.use(bodyParser.json()); // Index route app.get('/', function (req, res) { res.send('Hello! I am a Chatbot designed to help you learn Type […]

简单的Node.js程序占用了所有的系统内存,并永久地将XMLHttpRequest文件缓冲区写入磁盘

我创build了一个文件共享应用程序来使用我的家庭networking。 这与Google Drive或Dropbox的网页界面类似,但没有任何文件大小上限和安全性。 当通过局域网连接的其他计算机立即传输小文件时,它完美地工作,但是在2GB文件上testing时发生了一些奇怪的事情。 进度条花了大概四个小时才能达到50%,然后我就把它关掉了。 另外,看看有多less内存节点正在使用。 它将从低处启动,最高可达13GB,然后每分钟转储几次。 该文件使用XMLHttpRequest从浏览器界面上传。 这是前端代码的重要组成部分。 var formData = new FormData(); var file = document.getElementById("fileinput").files[0]; formData.append("file", file); var xhr = new XMLHttpRequest(); xhr.open("post", "/fileupload", true); xhr.send(formData); 而在服务器端,有一个使用express的非常简单的处理程序,它使用req.files.file并将其直接传递到fs.writeFile以将其保存到磁盘。 (根据console.log,'req.files.file'似乎是一个缓冲区types,显然它可以直接连接到磁盘上 )。 var express = require("express"); var fileUpload = require("express-fileupload"); var app = express(); app.use(express.static("public")); app.use(fileUpload()); var fs = require("fs"); app.post('/fileupload', function(req, res) { if(req.files […]

获取使用非常简单的脚本使用节点发送后无法设置标题

我在Node中编写了一个非常复杂且工作的js脚本。 我升级了我的服务器,发现它失败了。 回到基础,我发现这个简单的脚本失败了一个控制台消息,如下图所示,当我从我的浏览器去http://www.mapworldlive.com:8899/test : var http = require("http"); var express = require('express') var app = express() var server = http.createServer(app); server.on('request', app); server.listen(8899); var chttime=new Date(),showdate=chttime.toDateString(),secs=chttime.getSeconds(),mins=chttime.getMinutes(),hrs=chttime.getHours(),day=chttime.getDay(),month=chttime.getMonth(),year=chttime.getFullYear(); console.log("Test Server started: "+hrs+":"+mins+" "+showdate); app.use('/test',function(req, res) { console.log("hello world") res.end() }) 响应: Test Server started: 14:23 Sat Feb 04 2017 hello world Error: Can't set headers after they […]

使用Expresspath处理请求参数中的斜杠字符

我目前正在使用Express来处理URL缩短应用程序。 我希望用户能够input这样的URL: https://www.exampleurlshortener.com/new/https://www.google.com 问题是每当我尝试使用Express来指定参数时,它只会提取“https:”部分,之后的所有内容都会丢失,因为2个反斜杠正在注册为一个新的路由: app.get('/new/:url', (req, res) => { console.log(req.params.url) // outputs 'https:' 我想指定每个部分作为一个新的参数,但如果inner是空白的这最终将投掷404。我需要检查内部是否使用此方法是空白的,否则用户将能够键入https:/something/www.google.com app.get('/new/:prot/:inner/:address', (req, res) => { // throws 404 on valid addresses 有没有简单的方法来解决这个,我失踪了? 是否可以在请求的某个地方查看完整的URL? 或者可以忽略反斜杠?

快递静态CSS没有服务

我一直试图弄清楚这几个小时,我的头即将爆炸。 我真的希望这不是我错过的一些愚蠢的小细节… 我有一个服务器端渲染反应应用程序设置。 一切都很好。 我唯一的问题是,我似乎无法得到加载的CSS。 这是我的文件树(没有node_modules): https ://i.stack.imgur.com/xevUb.png' 我有我的server.js文件中的以下代码 app.use('static', express.static(__dirname + '/public')); app.use('dist', express.static(__dirname + '/dist')); app.get('*', (req, res) => { match({ routes, location: req.url }, (error, redirectLocation, renderProps) => { if (error) { res.status(500).send(error.message) } else if (redirectLocation) { res.redirect(302, redirectLocation.pathname + redirectLocation.search) } else if (renderProps) { var html = renderToString( < […]