- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Digital Ocean 上部署了一个带有 Redux 的 MERN 应用程序,Ubuntu 18.04 Droplet 应该完全部署,但它只能在我的 Chrome 浏览器中运行。我认为它可能只是因为 Chrome 浏览器有 Redux 扩展而起作用,但我不知道。
我已经成功地在 Digital Ocean Droplet 上部署了一个后端与此类似的 React 应用程序,但它没有 MongoDB 或 Redux。我安装了 MongoDB 和 Redux 应该可以很好地安装其他所有东西,所以我不知道问题是什么。当站点在 Chrome 浏览器中打开时,Mongo 和 Redux 工作得很好。我提出它是因为如果您知道在将 Mongo 和 Redux 添加到 Droplet 上的应用程序时需要进行调整,您可以共享该信息,这样您就不必筛选下面的所有数据。
当我在 iPhone 上访问该网站时,它不显示任何内容。
如果我在 Firefox 中访问该站点,则会加载该站点的图标,但屏幕为空白。在 Firefox 的控制台中,我看到了错误... Uncaught TypeError: t is undefined
.我不知道这个错误来自哪里。当我访问该网站时,我从未在 Chrome 上看到它。
我不知道我是否需要做一些不同的事情来为“生产”部署应用程序。也许这与问题有关。
也许该错误与 Nginx 配置有关。这是我的 Nginx 默认文件...
# 159.203.45.100 is where I go to visit the site
server {
listen 80;
server_name 159.203.45.100;
root /var/www/MERN_App/client/build;
error_page 404 /index.html;
location / {
add_header Cache-Control no-cache;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_pass http://localhost:5002;
}
}
这是我的
server.js
文件。 (我有 pm2 处理它)
const express = require('express');
const bodyParser = require('body-parser');
const methodOverride = require('method-override');
const path = require('path');
const app = express();
const jwt = require('jsonwebtoken')
const config = require('config')
// Middleware
app.use(bodyParser.json());
app.use(methodOverride('_method'));
app.use(express.urlencoded({ extended: true }));
app.use(function (req, res, next) {
// Website you wish to allow to connect
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
// Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
// Set to true if you need the website to include cookies in the requests sent
// to the API (e.g. in case you use sessions)
res.setHeader('Access-Control-Allow-Credentials', true);
// Pass to next layer of middleware
next();
});
// Use Routes
app.use('/api/items', require('./routes/api/items'));
app.use('/api/users', require('./routes/api/users'));
app.use('/api/auth', require('./routes/api/auth'));
app.use('/api/comments', require('./routes/api/comments'));
if (process.env.NODE_ENV === 'production') {
// Set static folder
app.use(express.static('client/build'));
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
}
const port = process.env.PORT || 5002;
app.listen(port, () => console.log(`Server started on port ${port}`));
这是
pm2 show 0
显示...
$ pm2 show 0
Describing process with id 0 - name server
┌───────────────────┬────────────────────────────────────────┐
│ status │ online │
│ name │ server │
│ namespace │ default │
│ version │ 1.0.0 │
│ restarts │ 0 │
│ uptime │ 3h │
│ script path │ /var/www/MERN_App/server.js │
│ script args │ N/A │
│ error log path │ /home/sammy/.pm2/logs/server-error.log │
│ out log path │ /home/sammy/.pm2/logs/server-out.log │
│ pid path │ /home/sammy/.pm2/pids/server-0.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 0 │
│ exec cwd │ /var/www/MERN_App │
│ exec mode │ fork_mode │
│ node.js version │ 10.22.0 │
│ node env │ N/A │
│ watch & reload │ ✘ │
│ unstable restarts │ 0 │
│ created at │ 2020-08-06T20:33:15.884Z │
└───────────────────┴────────────────────────────────────────┘
Revision control metadata
┌──────────────────┬────────────────────────────────────────────────┐
│ revision control │ git │
│ remote url │ https://github.com/MotorCityCobra/MERN_App.git │
│ repository root │ /var/www/MERN_App │
│ last update │ 2020-08-06T20:29:37.883Z │
│ revision │ 2613e5273955e382a6fd08d023ba1f403d9a3daf │
│ comment │ first commit │
│ branch │ master │
└──────────────────┴────────────────────────────────────────────────┘
Actions available
┌────────────────────────┐
│ km:heapdump │
│ km:cpu:profiling:start │
│ km:cpu:profiling:stop │
│ km:heap:sampling:start │
│ km:heap:sampling:stop │
└────────────────────────┘
Trigger via: pm2 trigger server <action_name>
Code metrics value
┌────────────────────────┬───────────┐
│ Heap Size │ 33.25 MiB │
│ Heap Usage │ 84.57 % │
│ Used Heap Size │ 28.12 MiB │
│ Active requests │ 0 │
│ Active handles │ 13 │
│ Event Loop Latency │ 0.84 ms │
│ Event Loop Latency p95 │ 4.93 ms │
│ HTTP Mean Latency │ 30 ms │
│ HTTP P95 Latency │ 57 ms │
│ HTTP │ 0 req/min │
└────────────────────────┴───────────┘
Divergent env variables from local env
┌────────────────┬──────────────────────┐
│ SSH_CONNECTION │ 75.118.134.38 37152 │
│ XDG_SESSION_ID │ 23 │
│ PWD │ /var/www/MERN_App │
│ SSH_CLIENT │ 75.118.134.38 37152 │
│ SSH_TTY │ /dev/pts/0 │
└────────────────┴──────────────────────┘
Add your own code metrics:
Use `pm2 logs server [--lines 1000]` to display logs
Use `pm2 env 0` to display environment variables
Use `pm2 monit` to monitor CPU and Memory usage server
这是我的
package.json
对于服务器...
{
"name": "meme_hole",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"client-install": "npm install --prefix client",
"start": "node server",
"server": "nodemon server.js",
"client": "npm start --prefix client",
"dev": "concurrently \"npm run server\" \"npm run client\"",
"build": "npm install && npm install --prefix client && npm audit fix && npm audit fix --prefix client && npm run build --prefix client",
},
"author": "",
"license": "ISC",
"dependencies": {
"bcryptjs": "^2.4.3",
"body-parser": "^1.19.0",
"concurrently": "^4.1.2",
"config": "^3.3.1",
"connect-flash": "^0.1.1",
"express": "^4.17.1",
"gridfs-stream": "^1.1.1",
"jsonwebtoken": "^8.5.1",
"method-override": "^3.0.0",
"mongoose": "^5.9.22",
"multer": "^1.4.2",
"multer-gridfs-storage": "^3.3.0",
"prop-types": "^15.7.2",
"react-infinite-scroll-component": "^4.5.3",
"react-redux": "^7.2.0",
"react-router-dom": "^5.2.0",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
"serve-index": "^1.9.1",
"stripe": "^8.81.0",
"uuid": "^3.4.0"
},
"devDependencies": {
"nodemon": "^1.19.4"
}
}
我的Mongo版本...
$ mongo --eval 'db.runCommand({ connectionStatus: 1 })'
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1
}
我的 Node 版本是
v10.22.0
我相信我已经通过最佳实践安装了所有东西。
sudo gpasswd -a "$USER" www-data
sudo chown -R "$USER":www-data /var/www
find /var/www -type f -exec chmod 0660 {} \;
sudo find /var/www -type d -exec chmod 2770 {} \;
我遵循了 Digital Ocean 提供的所有指南来设置服务器和其他一切。
最佳答案
我在边缘访问了该站点,但在我安装了扩展程序之前它没有工作,所以你是正确的,扩展程序正在使它工作。但我得到了一个不同的错误,Uncaught TypeError: Cannot read property 'apply' of undefined.
看起来有一个 store.js 文件试图运行 const store = createStore(... 但是 createStore 是未定义的。
根据此链接,https://github.com/zalmoxisus/redux-devtools-extension/issues/320 ,您可以尝试添加window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose
给您的store.js
文件。
如果你把它添加到你已经拥有的东西中,你会得到这个:window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() || window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose));
我想这使它在有和没有扩展的情况下运行。
关于node.js - 我的 MERN 应用程序仅适用于 Chrome。如何让它在所有浏览器和设备上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63293414/
我正在学习构建单页应用程序 (SPA) 所需的所有技术。总而言之,我想将我的应用程序实现为单独的层,其中前端仅使用 API Web 服务(json 通过 socket.io)与后端通信。前端基本上是
当我看到存储在我的数据库中的日期时。 这是 正常 。日期和时间就是这样。 但是当我运行 get 请求来获取数据时。 此格式与存储在数据库 中的格式不同。为什么会发生这种情况? 最佳答案 我认为您可以将
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试使用backbone.js 实现一些代码 和 hogan.js (http://twitter.github.com/hogan.js/) Hogan.js was developed ag
我正在使用 Backbone.js、Node.js 和 Express.js 制作一个 Web 应用程序,并且想要添加用户功能(登录、注销、配置文件、显示内容与该用户相关)。我打算使用 Passpor
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我尝试在 NodeJS 中加载数据,然后将其传递给 ExpressJS 以在浏览器中呈现 d3 图表。 我知道我可以通过这种方式加载数据 - https://github.com/mbostock/q
在 node.js 中,我似乎遇到了相同的 3 个文件名来描述应用程序的主要入口点: 使用 express-generator 包时,会创建一个 app.js 文件作为生成应用的主要入口点。 通过 n
最近,我有机会观看了 john papa 关于构建单页应用程序的精彩类(class)。我会喜欢的。它涉及服务器端和客户端应用程序的方方面面。 我更喜欢客户端。在他的实现过程中,papa先生在客户端有类
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一个图形新手,需要帮助了解各种 javascript 2D 库的功能。 . . 我从 Pixi.js 中得到了什么,而我没有从 Konva 等基于 Canvas 的库中得到什么? 我从 Konva
我正在尝试将一些 LESS 代码(通过 ember-cli-less)构建到 CSS 文件中。 1) https://almsaeedstudio.com/ AdminLTE LESS 文件2) Bo
尝试查看 Express Passport 中所有登录用户的所有 session ,并希望能够查看当前登录的用户。最好和最快的方法是什么? 我在想也许我可以在登录时执行此操作并将用户模型数据库“在线”
我有一个 React 应用程序,但我需要在组件加载完成后运行一些客户端 js。一旦渲染函数完成并加载,运行与 DOM 交互的 js 的最佳方式是什么,例如 $('div').mixItUp() 。对
请告诉我如何使用bodyparser.raw()将文件上传到express.js服务器 客户端 // ... onFilePicked(file) { const url = 'upload/a
我正在尝试从 Grunt 迁移到 Gulp。这个项目在 Grunt 下运行得很好,所以我一定是在 Gulp 中做错了什么。 除脚本外,所有其他任务均有效。我现在厌倦了添加和注释部分。 我不断收到与意外
我正在尝试更改我的网站名称。找不到可以设置标题或应用程序名称的位置。 最佳答案 您可以在 config/ 目录中创建任何文件,例如 config/app.js 包含如下内容: module.expor
经过多年的服务器端 PHP/MySQL 开发,我正在尝试探索用于构建现代 Web 应用程序的新技术。 我正在尝试对所有 JavaScript 内容进行排序,如果我理解得很好,一个有效的解决方案可以是服
我是 Nodejs 的新手。我在 route 目录中有一个 app.js 和一个 index.js。我有一个 app.use(multer....)。我还定义了 app.post('filter-re
我正在使用 angular-seed用于构建我的应用程序的模板。最初,我将所有 JavaScript 代码放入一个文件 main.js。该文件包含我的模块声明、 Controller 、指令、过滤器和
我是一名优秀的程序员,十分优秀!