Мне трудно вернуться к проекту 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)