小编Jac*_*ild的帖子

在Heroku Node.js应用程序上的Socket.io和多个Dyno.在建立连接之前关闭WebSocket

我正在构建一个部署到Heroku的App,它使用Websockets.

当我只使用1个dyno时,websockets连接正常工作,但当我缩放到> 1时,我得到以下错误

POST http://****.herokuapp.com/socket.io/?EIO = 2&transport = polling&t = 1412600135378-1&sid = zQzJJ8oPo5p3yiwIAAAC 400(错误请求)socket.io-1.0.4.js:2

WebSocket连接到'ws://****.herokuapp.com/socket.io/?EIO = 2&transport = websocket&sid = zQzJJ8oPo5p3yiwIAAAC'失败:WebSocket在建立连接之前关闭.socket.io-1.0.4.js:2

我正在使用Redis适配器来启用多个Web进程

var io = socket.listen(server);
var redisAdapter = require('socket.io-redis');
var redis = require('redis');

var pub = redis.createClient(18049, '[URI]', {auth_pass:"[PASS]"});
var sub = redis.createClient(18049, '[URI]', {detect_buffers: true, auth_pass:"[PASS]"} );

io.adapter( redisAdapter({pubClient: pub, subClient: sub}) );
Run Code Online (Sandbox Code Playgroud)

这正在localhost(我正在使用工头运行,正如Heroku所做的那样,我正在启动2个Web进程,与Heroku相同).

在我实现redis适配器之前,我遇到了Web套接字握手错误,因此适配器已经产生了一些影响.此外它现在偶尔工作,我假设当套接字匹配相同的web dyno.

我也尝试启用粘性会话,但它永远不会有效.

var sticky = require('sticky-session');
sticky(1, server).listen(port, function (err) {
  if (err) {
    console.error(err);
    return process.exit(1);
  }
  console.log('Worker listening on %s', port); …
Run Code Online (Sandbox Code Playgroud)

heroku websocket redis node.js socket.io

24
推荐指数
3
解决办法
4714
查看次数

节点JS AWS S3文件上传.如何获取公共URL响应

我正在使用Node SDK将文件上传到Amazon S3.

文件上传工作正常,但我希望将文件的公共URL发送回客户端.

目前我得到的回应是:

Successfully uploaded data { ETag: '"957cd1a335adf5b4000a5101ec1f52bf"' }
Run Code Online (Sandbox Code Playgroud)

这是我的代码.我正在使用Node Express服务器和Multer来处理上传.

app.use(multer({ // https://github.com/expressjs/multer
      dest: './public/uploads/', 
      limits : { fileSize:100000 },
      rename: function (fieldname, filename) {
        var time = new Date().getTime();
        return filename.replace(/\W+/g, '-').toLowerCase() + time;
      },
      onFileUploadData: function (file, data, req, res) {
        // file : { fieldname, originalname, name, encoding, mimetype, path, extension, size, truncated, buffer }
        var params = {
          Bucket: creds.awsBucket,
          Key: file.name,
          Body: data,
          ACL: 'public-read'
        };

        var s3 = new aws.S3() …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 node.js express multer

20
推荐指数
1
解决办法
2万
查看次数

在Heroku上使用Node读取,编写和存储JSON

我正在构建一个基于在Heroku上运行的Node.js的应用程序.

该应用程序使用一个JSON文件,目前正在与应用程序的其余部分一起推送,我们正在阅读和写入它,如下所示:

var channelsList = require("./JSON/channels.json");

...

fs.writeFile("JSON/channels.json", JSON.stringify(channelsList), onCleaned);
Run Code Online (Sandbox Code Playgroud)

这对于原型来说现在已经有用了,但我知道我们需要使用数据存储,否则当Dyno睡眠或我推动更改时,更改将不会持续存在.

我已经读过,使用Mongolabs设置数据库可能是一个不错的选择,但我想知道是否还有其他选项,因为这似乎可能比必要的更复杂.这对我来说是一个新的领域,所以如果Mongo是要走的路,那么指针也会受到赞赏.

我们还希望将新文件写为一周中每天的备份.

干杯.

json datastore heroku mongodb node.js

13
推荐指数
1
解决办法
7771
查看次数

Next.js将NODE_ENV传递给客户端

我正在使用Next.js构建一个React SSR应用程序。

我希望能够在客户端访问NODE_ENV,因为这将告诉我的应用程序要使用哪些API端点。

我正在努力为此找到一个体面的方法。第一次在服务器上呈现页面时,我想将NODE_ENV定义为窗口变量,然后在进行API调用的辅助函数中,检查是否在服务器或客户端上调用了代码,并根据需要使用window或process.env变量。

有没有人对这个问题有好的解决方案。这肯定是一个普遍的问题,但是我找不到任何好的解决方案。

javascript environment-variables node.js reactjs next.js

11
推荐指数
4
解决办法
9286
查看次数

在 Wordpress(或 .htaccess)中制作 URL 别名

我有一个在 Wordpress 上运行的网站,我想创建一个自定义短网址。

如果页面 URL 是 www.mysite.com/category/post 我希望用户能够访问 www.mysite.com/alias

如果有一种“Wordpress-y”的做事方式,那会更好,但我也可以通过修改 .htaccess 文件来做到这一点。

谢谢

php apache wordpress .htaccess mod-rewrite

7
推荐指数
1
解决办法
1万
查看次数

将 multipart/form-data POST 到 Serverless Next.js API(在 Vercel / Now.sh 上运行)

我正在使用 Vercel Serverless 函数来处理上传到 Digital Ocean Spaces 的文件(与 AWS S3 相同的 API)。但是,我在请求处理程序中处理多部分/表单数据时遇到了问题。

在前端,我使用 fetch 来发布带有文件和几个文本字段的 FormData() 对象。当在标题上记录主体和服务器时,我可以按预期看到那里的所有内容,但是当使用 Multer 处理多部分时(我也尝试了其他几个类似的包),我无法检索任何已发布的字段或文件。

另外值得注意的是,当使用 Postman 测试 POST 请求时,我遇到了完全相同的问题,因此我确信问题出在无服务器功能上。

前端:

const handleSubmit = async (values) => {
    const formData = new FormData();

    // build my Form Data from state.
    Object.keys(values).forEach(key => {
      formData.append(key, values[key]);
    });

    const response = await fetch("/api/post-submission", {
      method: "POST",
      headers: {
        Accept: "application/json",
      },
      body: formData,
    });
    const json = await response.json();
  };
Run Code Online (Sandbox Code Playgroud)

无服务器处理程序:

const util = require("util");
const multer = …
Run Code Online (Sandbox Code Playgroud)

forms multipartform-data node.js serverless vercel

6
推荐指数
2
解决办法
2万
查看次数

Javascript/JQuery - 如果在特定大小,窗口重定向调整大小

我正在尝试编写一些脚本,当用户调整屏幕大小以达到某个阈值时,该脚本将重定向.

我正在使用JQuery窗口调整大小函数,我编写的代码如下:

$(window).resize(function(){
    if ((window.width > 225px) && (window.width < 255px) && (window.height > 330px) && (window.height < 400px))
    {
    window.location = "URL GOES HERE"
    };
Run Code Online (Sandbox Code Playgroud)

javascript jquery redirect

4
推荐指数
1
解决办法
3435
查看次数

SQLite无法打开 - Meteor创建应用程序

我正在尝试用Meteor创建一个新的应用程序(这是我第一次在这台计算机上使用它).

当我尝试开始一个新的应用程序时:

meteor create simple-todos
Run Code Online (Sandbox Code Playgroud)

我收到以下错误并创建应用程序失败:

{ [Error: SQLITE_CANTOPEN: unable to open database file]
stack: [Getter] }
Run Code Online (Sandbox Code Playgroud)

在下面我得到一些其他错误:

Error: SQLITE_CANTOPEN: unable to open database file
    at Object.Future.wait (/Users/Jack/.meteor/packages/meteor-tool/.1.1.4.2l3p0l++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:398:15)
Run Code Online (Sandbox Code Playgroud)

我找不到其他人有同样的问题,所以我对如何调试或修复有点不知所措.关于如何调试/修复此问题的指针将非常有用.

sqlite macos meteor

4
推荐指数
1
解决办法
3724
查看次数

输入字段iOS Safari bug - 无法输入任何文本

我在页面上的表单中有自定义样式的文本输入.

它在桌面,Android,iOS Chrome上按预期工作,但有时在iOS Safari中打字时,没有文字输入,即使该字段有焦点且光标闪烁(不经常发生,但似乎发生了一些用户的所有时间).

表单代码非常标准,(直接从Mailchimp复制)

<form action="[mailchimp subscribe url]" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
                <div id="mc_embed_signup_scroll">
                    <input type="email" value="" placeholder="Email" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>
                    <input type="submit" value="REQUEST INVITE" name="subscribe" id="mc-embedded-subscribe" class="button">
                    <div id="mc_embed_signup_scroll">
                    <div style="position: absolute; left: -5000px;"><input type="text" name="b_e563c0e6b5344e25de276c14f_5e5c7a08a6" tabindex="-1" value=""></div>
                </div>
            </form>
Run Code Online (Sandbox Code Playgroud)

自定义CSS是:

input.email, .button {
    outline: none;
    border-radius: 3px;
    -webkit-appearance: none;
    appearance: none;
    width: 240px;
    padding: 12px 16px;
    background-color: rgba(255,255,255,0.1);
    margin: 0;
    vertical-align: middle;
    font-size: 12px;
    letter-spacing: 0.1em;
    font-family: 'Calibre Medium';
    color: white !important; …
Run Code Online (Sandbox Code Playgroud)

css forms safari input ios

4
推荐指数
2
解决办法
4535
查看次数

Mongodb:从数组中查找和更新对象属性

我有一个包含多个文档的集合,这些文档遵循以下结构:

{
    "_id" : {
        "oid" : XXX
    },
    "name" : "Name",
    "videos" [
        {
          "id" : 1,
          "thumbnail" : "thumbnail.jpg",
          "name" : "Name here"
        },
        {
          "id" : 2,
          "thumbnail" : "thumbnail.jpg",
          "name" : "Name here"
        },
        {
          "id" : 3,
          "thumbnail" : "thumbnail.jpg",
          "name" : "Name here"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我想查找并更新视频的缩略图,我只知道其中的 id,但不知道它在哪个文档中。

这是我迄今为止尝试过的方法,但它无法正常工作。我发现的所有示例都依赖于知道文档 ID 和要更新的对象的数组位置。我还发现做这样的查询发现文档没问题,但将整个文档设置为新缩略图!

db.collection(COLLECTION-NAME, function(err, collection){
    collection.update(
      { 'videos.id' : 2 },
      { $set: { thumbnail: "newThumbnail.jpg" } },
      function(err, result){
        if (!err){
          console.log('saved', result)
        } …
Run Code Online (Sandbox Code Playgroud)

mongodb nosql mongodb-query

3
推荐指数
1
解决办法
2099
查看次数

Cannon JS — 使用属性初始化 body 后的位置向量 NaN

我正在使用简单的设置 Cannon.js,遵循在线示例,但是当我在构造函数中设置任何属性时,位置和角速度 x、y 和 z 都是 NaN。

这有效,但不会移动,因为身体没有质量。

const body = new CANNON.Body();
console.log(body.position.x, body.mass); //logs 0, 0
Run Code Online (Sandbox Code Playgroud)

然而,这并不...

const body = new CANNON.Body({
    mass: 1,
});
console.log(body.position.x, body.mass); //logs NaN, 1
Run Code Online (Sandbox Code Playgroud)

此外,如果我实例化身体,然后设置质量,它仍然不会移动。

更多的上下文代码(我在动画循环中调用更新函数,它正在发生)。

export const init = () => {
world = new CANNON.World();
world.gravity.set(0,1,0);
world.broadphase = new CANNON.NaiveBroadphase();
world.solver.iterations = 10;

for (let i = 0; i < BODIES_COUNT; i++) {
    const shape = new CANNON.Box(new CANNON.Vec3(4,4,4));
    const body = new CANNON.Body({
        mass: 1,
    });
    const body = …
Run Code Online (Sandbox Code Playgroud)

javascript physics three.js cannon.js

3
推荐指数
1
解决办法
506
查看次数