промежуточное ПО / ошибки в Node.js проекте - PullRequest
0 голосов
/ 18 февраля 2020

Мне трудно вернуться к проекту Node.js через некоторое время. Мне нужно реализовать некоторые новые функции, и все изменилось, так как я ранее работал над тем же проектом.

Вот одна ошибка, которую я получаю в журналах:

2020-02-17T16:42:42.602361+00:00 app[web.1]: Error: Most middleware (like json) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
2020-02-17T16:42:42.602363+00:00 app[web.1]: at Function.get (/app/node_modules/express/lib/express.js:89:13)
2020-02-17T16:42:42.602365+00:00 app[web.1]: at Object.<anonymous> (/app/index.js:57:17)
..........

После прочтения net ища решение, я добавил эту строку в раздел зависимостей моего пакета. json file:

"body-parser": "*",

А затем в свой индекс. js file Я добавил следующую строку:

var bodyParser = require('body-parser');

и заменил эти две строки:

app.use(express.json());
app.use(express.urlencoded());

на эти:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded());

Это не решило проблему, поэтому я должен что-то делать не так или нет делать все, что нужно.

Я не эксперт по Node.js и, конечно, не уверен, что правильно использовал то, что, возможно, нашел на net. Так что, если у кого-то есть соответствующий совет, это было бы более чем приветствуем.

Для справки, вот текущий пакет. json file:

{
  "name": "parse-server-example",
  "version": "1.4.0",
  "description": "An example Parse API server using the parse-server module",
  "main": "index.js",
  "repository": {
    "type": "git",
    "url": "https://github.com/ParsePlatform/parse-server-example"
  },
  "license": "MIT",
  "dependencies": {
    "@parse/simple-mailgun-adapter": "^1.0.3",
    "ejs": "^3.0.1",
    "express": "^4.17.1",
    "body-parser": "1.19.0",
    "kerberos": "~0.0.x",
    "parse": "~1.8.0",
    "parse-server": "*"
  },
  "scripts": {
    "start": "node index.js"
  },
  "engines": {
    "node": ">=4.3"
  }
}

И это соответствующее содержание index. js file:

var express = require('express');
var bodyParser = require('body-parser');
var ParseServer = require('parse-server').ParseServer;
var path = require('path');
var mongo = require('mongodb');
var theMgoClient = mongo.MongoClient;

var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI;

if (!databaseUri) {
  console.log('DATABASE_URI not specified, falling back to localhost.');
}

var app = express();
app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
// views is the directory for all template files
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');

var api = new ParseServer({
  databaseURI: databaseUri,
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID,
  masterKey: process.env.MASTER_KEY,
  serverURL: "https://myworld.herokuapp.com/parse",
  publicServerURL: 'https://myworld.herokuapp.com/parse',
  appName: 'MyGoodApp',
  liveQuery: {
    classNames: ["MyThings_List"]
  },
  verifyUserEmails: true,
  emailAdapter: {
    module: '@parse/simple-mailgun-adapter',
    options: {
      fromAddress: 'contact868@hmail.com',
      domain: 'mydomain.pet',
      apiKey: process.env.EML_ADAPTER_KEY
    }
  }
});

// Serve static assets from the /public folder
app.use('/public', express.static(path.join(__dirname, '/public')));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded());

// Serve the Parse API on the /parse URL prefix
var mountPath = process.env.PARSE_MOUNT;
app.use(mountPath, api);

// Parse Server plays nicely with the rest of your web routes
app.get('/', function(req, res) {
  displayFunc("index", res);
});

app.get('/option1', function(req, res) {
  ......
});

app.get('/option2', function(req, res) {
    ......
});

app.get('/option3', function(req, res) {
    ......
});

app.post('/newStuff', function(req, res) {
    ......
});

Теперь вот что я получаю при запуске npm install:

ShellPrompt$ npm install

> bcrypt@1.0.2 install /Users/me/Documents/Heroku/myapp/node_modules/parse-server/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download(404): https://github.com/kelektiv/node.bcrypt.js/releases/download/v1.0.2/bcrypt_lib-v1.0.2-node-v72-darwin-x64.tar.gz 
node-pre-gyp ERR! Pre-built binaries not found for bcrypt@1.0.2 and node@12.16.0 (node-v72 ABI) (falling back to source compile with node-gyp) 
node-pre-gyp ERR! Tried to download(undefined): https://github.com/kelektiv/node.bcrypt.js/releases/download/v1.0.2/bcrypt_lib-v1.0.2-node-v72-darwin-x64.tar.gz 
node-pre-gyp ERR! Pre-built binaries not found for bcrypt@1.0.2 and node@12.16.0 (node-v72 ABI) (falling back to source compile with node-gyp) 
  CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
  CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o
  CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o
sed: ./Release/.deps/Release/obj.target/bcrypt_lib/src/blowfish.o.d.raw: No such file or directory
make: *** [Release/obj.target/bcrypt_lib/src/blowfish.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:321:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...