Node.js项目中的中间件/错误

Node.js项目中的中间件/错误,node.js,express,heroku,middleware,Node.js,Express,Heroku,Middleware,过了一段时间,我很难回到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://githu

过了一段时间,我很难回到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)
..........
然后我在index.js文件中添加了以下行:

var bodyParser = require('body-parser');
并替换了这两行:

app.use(express.json());
app.use(express.urlencoded());
通过这些:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
这并没有解决问题,所以我一定是做错了什么,或者没有做所有需要做的事情

我不是Node.js方面的专家,当然也不确定我是否正确使用了我在网上可能找到的东西。所以如果有人有相关的建议,那就更受欢迎了

以下是当前package.json文件供参考:

"body-parser": "*",
{
  "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文件的相关内容:

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)

我需要更多的信息。提供包含这些代码行的文件。json()应该可以正常工作,不再需要主体解析器。同时提供您正在使用的相关package.json和node/npm版本。请将“body parser”:“*”更改为
“body parser”:“1.19.0”
,以及
npm安装
并检查。另外,你能发布
server.js
file1.19.0吗。这似乎没什么区别。但是可能还有其他问题。我刚刚将package.json文件的内容添加到post中。还有index.js文件的内容。