Node.js项目中的中间件/错误
过了一段时间,我很难回到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
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文件的内容。