小编Spr*_*der的帖子

如何让EC2上的Node.js服务器永远运行?

你可以从我的问题中看出,我是新手......

我建立了我的第一个网站,我建立了我的第一个Node.js服务器来服务它,然后在EC2上推送所有内容.

我在我的EC2 IP地址上测试了一切,一切似乎都在工作.

到现在为止,我一直在本地测试我的应用程序,所以每当我关闭终端时,app.js会停止运行,因此无法在localhost上提供任何内容.

既然我的服务器在EC2上,每当我关闭终端时,都会发生同样的事情("显然"可以说......).

所以我的问题是我如何让我的Node.js服务器在EC2上运行...就像...永远...所以我的网站保持活着..永远:)

我读了一些名为"永远"的节点模块,但我想知道(新的和所有......)为什么这个"永远"功能不是Node.js-EC2系统的默认设置?

我的意思是,如果我错了,请纠正我,但是不是设置一个网络服务器并将其推送到现场让它永远存在的全部意义吗?这不是服务器应该做什么(无限听取请求)?如果是这种情况,为什么我们需要额外的模块/设置来实现这一目标?

谢谢你的帮助..你可以告诉我,我不仅要找一个解决方案,还要解释一下,因为我真的很困惑.. :-)

编辑(您可能需要的一些细节) - 在EC2上安装我的应用程序后,这些是我在终端上执行的步骤(该应用程序正在运行Amazon Linux):

  • 我在终端上键入ssh -i xxxxxxxxxxx.pem ec2-user@ec2-xx-xx-xx-x.eu-west-1.compute.amazonaws.com

  • 登录到亚马逊机器后,我转到相关文件夹并执行节点app.js

  • 有机器3个文件夹:node,node_modules*name of my app*

  • app.js 居住在 *name of my app*

  • 之后,该网站将在我的EC2 IP上运行

  • 关闭终端后,一切都关闭了

webserver amazon-ec2 node.js

53
推荐指数
3
解决办法
3万
查看次数

使用nodemailer通过Node.js发送电子邮件不起作用

我已经在本地(http://localhost:8080)设置了一个基本的NodeJS服务器(使用nodemailer模块),这样我就可以测试服务器是否可以实际发送电子邮件了.

如果我理解正确的SMTP选项(请纠正我,如果我错了),我可以尝试从我的服务器发送电子邮件给某人的电子邮件帐户直接,或者我可以发送电子邮件,仍然使用Node.js的,但通过实际的电子邮件帐户(在这种情况下是我的个人Gmail帐户),即使用SMTP.此选项要求我通过NodeJS远程登录该帐户.

因此,在下面的服务器中,我实际上是尝试使用NodeJ从我的个人电子邮件帐户向我的个人电子邮件帐户发送电子邮件.

这是我的简单服务器:

var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport("SMTP", {
    service: 'Gmail',
    auth: {
        user: '*my personal Gmail address*',
        pass: '*my personal Gmail password*'
    }
});

var http = require('http');
var httpServer = http.createServer(function (request, response)
{
    transporter.sendMail({
       from: '*my personal Gmail address*',
       to: '*my personal Gmail address*',
       subject: 'hello world!',
       text: 'hello world!'
    });
}).listen(8080);
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.我收到了谷歌的一封电子邮件说:

Google帐户:登录尝试已被阻止如果是您的话您可以切换到Google制作的应用程序(如Gmail)来访问您的帐户(推荐)或更改您的设置,网址https://www.google.com/settings/security/ lesssecureapps,以便您的帐户不再受现代安全标准的保护.

我在nodemailer GitHub页面上找不到上述问题的解决方案.有没有人有解决方案/建议?

谢谢!:-)

email smtp node.js nodemailer

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

仅使用CSS将Parent Width设置为Children Total Width?

我不知道会包含多少.child元素,.parent但我知道它们各自的宽度.

我想设置宽度.parent等于(每个的宽度.child)*(总数.child)

我不想用floatswidth: auto;

我可以calc()不使用Javascript 做点什么吗?

**CSS:**

.parent {
  height: 100%;
  width: calc({number of children} * {width of each child = 100px});
}

.child {
  height: 100px;
  width: 100px;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="parent">
  <div class="child">
  <div class="child">
  <div class="child">
</div>
Run Code Online (Sandbox Code Playgroud)

html css calc width css3

17
推荐指数
4
解决办法
4万
查看次数

前端和后端可以共享同一个package.json吗?

我有一个小型个人项目,正在一个存储库中开发。

后端是 Node.js 服务器,前端是 Vue.js 应用程序。

我希望它们共享相同的 package.json

我想要这样做的唯一原因是因为我想使用"scripts: {}"一个常见的 package.json 来执行引用后端或前端模块的命令。

这可能吗 ?

这种结构是否有意义并且有效:

- my-project
  - front
    - {Vue.js files & folders}
  - back
    - {files & folders for my server}
  - package.json (containining dependencies and yarn scripts for both front and back)
Run Code Online (Sandbox Code Playgroud)

但这是否也意味着,当 Vite/Vue 编译 .js 文件进行生产时,它也会“意外地”包含不相关的 node_modules,这些模块实际上仅供后端使用?

更新: 我尝试过,它非常干净、简单并且工作正常。我将其发布在这里以防有人感兴趣:

- /root
  - /back (contains server files & folders)
  - /front (contains Vue.js files & folders)
  - package.json
  - .eslintrc.cjs
  - .gitignore
  - vite.config.js
  - …
Run Code Online (Sandbox Code Playgroud)

node.js vue.js package.json yarnpkg

12
推荐指数
1
解决办法
7672
查看次数

使用AJAX - WooCommerce API将变体添加到购物车?

我有一个包含以下数据的项目:

var item = {
  id : "124",
  name : "xxx",
  price : "13.13",
  quantity : 1,
  options : {
    "size" : "xl",
    "color": "pink"
  }
};
Run Code Online (Sandbox Code Playgroud)

当用户点击"添加到购物车"时,我想使用WC API制作Ajax请求,并将上述项目添加到购物车.

jQuery.ajax({
   url: "some/woocommerce/api/add/to/cart/request/path",
   data: item,
   type: "POST"
});
Run Code Online (Sandbox Code Playgroud)

然后在购物车页面上,我想使用WC API制作另一个Ajax请求并检索购物车的内容.

我没有找到任何关于如何使用Javascript从客户端执行此操作的文档(官方或非官方).

有谁知道并且能为我提供一个例子吗?

此外,有谁知道为什么WooCommerce Api文档是如此可怕(缺乏有关如上所述的明显/标准问题的任何信息).我正在认真考虑让我们公司改用Shopify.

javascript ajax woocommerce

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

如何在本地通过Node.js提供静态文件?

我有以下文件位置:

file:///Users/MyName/Developer/sitename/scripts (contains all .js files..)
file:///Users/MyName/Developer/sitename/css (contains all .css files..)
file:///Users/MyName/Developer/sitename/images (contains all .jpg/png/etc. files..)
file:///Users/MyName/Developer/sitename/sitename.html
file:///Users/MyName/Developer/sitename/server.js
Run Code Online (Sandbox Code Playgroud)

在内部sitename.html我加载所有必要的文件,例如:

<html>
  <head>
    <script src="scripts/somefile.js"></script>
  </head>
  ...
</html>
Run Code Online (Sandbox Code Playgroud)

所以每当我打开file:///Users/MyName/Developer/sitename/sitename.html一切都很好.

但是,每当我尝试file:///Users/MyName/Developer/sitename/sitename.html通过我设置的本地Node.js服务器(服务器文件位置:) 加载时file:///Users/MyName/Developer/sitename/server.js,如下所示:

var http = require("http"); 
var fs = require("fs");

fs.readFile('./sitename.html', function (err, html) 
{
    if (err) throw err; 

    http.createServer(function (request,response)
    {  
        // serve site
        if (request.url === "/")
        {
            response.writeHeader(200, {"Content-Type": "text/html"});  
            response.write(html);  
        }
        response.end(); 
    }).listen(8080); 
});
Run Code Online (Sandbox Code Playgroud)

sitename.html找到并加载,但是应该通过它加载的所有其他文件都无法加载,因为它们都被赋予前缀http://localhost:8080/(http://localhost:8080/scripts/somefile.js例如,不是有效的文件路径).

看起来,只要服务器被创建(内部 …

html localhost relative-path file-location node.js

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

有没有办法使用Javascript读取console.log?

标题非常明显......

有没有办法读取输出到console.log的任何内容,直到您决定使用Javascript读取它为止?

javascript console.log

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

如何使用Javascript Math库计算直角三角形的角度?

考虑以下三角形:

在此输入图像描述

我想计算角度X.

我有以下内容:

    var opposite = 2.5;
    var hypotenuse = 5;

    var sinOfAngleX = opposite / hypotenuse; // 0.5
Run Code Online (Sandbox Code Playgroud)

所以现在我知道Math.sin(valueofAngleX)会回来0.5.

但是如果我使用Math()库知道角度的正弦,我如何得到角度的值?

根据本教程,我需要做:

var angleX = sin to the power of negative one of 0.5

但我不知道如何将其翻译成JS.

我试过了 :

var angleX = Math.pow(Math.sin(sinOfAngleX), -1);
Run Code Online (Sandbox Code Playgroud)

但它返回2.085829642933488,这显然是错误的.正确的答案应该是30

如果以上所有内容都是错误的,有没有人知道如何使用JS Math()库正确计算角度X?

谢谢!

javascript math trigonometry

5
推荐指数
1
解决办法
3566
查看次数

Express.js:POST 数据作为 req.body 对象的 KEY 而不是 req.body 的 VALUE?

来自我正在做的客户:

$.ajax({
        url: '/create',
        type: 'POST',
        data: JSON.stringify({
            theme: "somevalue",
            snippet: {
                name: "somename",
                content: "somevalue"
            }
        }), 
        complete: function (response)
        {

        }
    });
Run Code Online (Sandbox Code Playgroud)

在服务器 ( node.js/express.js) 上我正在做:

var app = express();
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
.......
... 
app.post('/create', function (req, res)
{
   var dataReceived = req.body;
});
Run Code Online (Sandbox Code Playgroud)

我预计的值为 dataReceived

{
   "theme" : "somevalue",
   "snippet" : {
     "name": "somename",
     "content" : "somevalue"
   } 
}
Run Code Online (Sandbox Code Playgroud)

取而代之的dataReceived是:

{ 
 '{"theme":"somevalue","snippet":"name":"somename","content":"somevalue"}}': '' 
}
Run Code Online (Sandbox Code Playgroud)

这真的很奇怪,我找不到我做错了什么。有任何想法吗?

来自BodyParser 模块文档

bodyParser.urlencoded(选项)

返回仅解析 …

post json node.js express

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

数字输入 min 属性不适用于浮点数

对于下面的 HTML,当我在输入中键入值3并单击时submit,Chrome(至少)会在弹出窗口中显示以下错误:

Please enter a valid value. The two nearest valid values are 2.0001 and 3.0001.
Run Code Online (Sandbox Code Playgroud)

这没有道理。我已将最小值设置为0.0001,并且输入大于0.0001 的3

Please enter a valid value. The two nearest valid values are 2.0001 and 3.0001.
Run Code Online (Sandbox Code Playgroud)
document.getElementById('form').onsubmit = function(e) {
  e.preventDefault()
}
Run Code Online (Sandbox Code Playgroud)

html javascript

5
推荐指数
1
解决办法
164
查看次数