javascript - 本地和生产环境中 Node 的行为

标签 javascript node.js nginx google-compute-engine

我有一个基本的 Nodejs 服务器,提供静态文件。在本地测试中效果非常好。

但是,我将其托管在谷歌云实例上。设置 nginx 服务器。访问页面工作正常。

问题是,从 google 托管服务器访问页面时,找不到 html 页面中包含的某些 js 文件。我检查了代码/文件,与本地测试使用的相同。

let express = require('express');
var app = express();
app.use(express.static('public'));
app.get('/',function(req,res){

    res.sendFile(__dirname + '/main.html');

});

app.listen(8080);

console.log("listenning on 8080");

HTML 页面:

<head>
    <script type="text/javascript" src="/web3-min.js"></script>
    <script type="text/javascript" src="/etherjs.js"></script>

错误:http://prntscr.com/jmue8t

实例上的文件架构:http://prntscr.com/jmuebs

为什么要这样做以及如何解决这个问题?

编辑:NGINX配置文件(server_name是我的实异常(exception)部IP):

http://prntscr.com/jmy8wy

最佳答案

您的文件将在 http://you-ip-address/public/web3-min.js

在您的错误图像中,您正在像 http://you-ip-address/web3-min.js 一样访问它们。

因此,在您的 HTML 页面中更改 src="/public/web3-min.js"

编辑:

如果您希望 Nginx 处理静态文件的服务,您可以像下面这样配置您的 Nginx。

server {
  listen 8081;
  server_name example.com;
  location / {
    root /path/to/website/public;
    index index.html;
    try_files $uri $uri/ @express; # instead of 404, proxy back to express using a named location block;
    # source: https://stackoverflow.com/a/15467555/8436941
  }
  location @express {
    proxy_pass http://localhost:8080;
  }
}

引用号:Express + Nginx. Can't serve static files

关于javascript - 本地和生产环境中 Node 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50542059/

相关文章:

javascript - Node.js 使用请求模块发布大请求挂起

javascript - 多个 HTML DOM - 解析和传输数据

javascript - AngularJS 将工厂注入(inject)提供者

javascript - 尝试通过 Expo (React Native) 启动应用程序时从 NodeJS 获取 EISDIR 错误

node.js - Lambda 中的 SES.sendEmail 未调用 Promise

node.js - 如何使用 Node xml2js 模块转义字符?

.htaccess - nginx重写html文件并添加尾部斜杠

ruby-on-rails - Ubuntu 在代理问题后面安装 Nginx

javascript - 当转到下一个输入时 react 事件触发

Nginx proxy_pass 与 $remote_addr