Nodemon 崩溃
Nodemon crashes
我尝试部署 js 应用程序但由于某种原因无法启动 nodemon:
nodemon
[nodemon] 2.0.12
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node user.server.js`
file:///var/www/html/socioboard/socioboard-api/User/middleware/recent-
visited.middleware.js:73
const category = request?.baseUrl?.replace('/v1/', '') || ' ';
^
SyntaxError: Unexpected token '.'
at Loader.moduleStrategy (internal/modules/esm/translators.js:140:18)
[nodemon] app crashed - waiting for file changes before starting...
这是它指向的文件:
import moment from 'moment';
import RecentVisitedModel from '../../Common/Mongoose/models/recent-visited.js';
import { phproutes } from '../../Common/Shared/recent.visited.shared.js';
const recentVisitedModel = new RecentVisitedModel();
export default (request, response, next) => {
/* #swagger.ignore = true */
const requestStart = Date.now();
const oldWrite = response.write;
const oldEnd = response.end;
const chunks = [];
let body;
response.write = function (chunk) {
chunks.push(chunk);
return oldWrite.apply(response, arguments);
};
response.end = function (chunk) {
if (chunk) chunks.push(chunk);
if (Buffer.isBuffer(chunks))
body = Buffer.concat(chunks).toString('utf8');
oldEnd.apply(response, arguments);
};
let requestErrorMessage = null;
const getError = (error) => {
requestErrorMessage = error.message;
};
request.on('error', getError);
const logClose = () => {
removeHandlers();
log(request, response, 'Client aborted.');
};
const logError = (error) => {
removeHandlers();
log(request, response, error.message);
};
const logFinish = () => {
removeHandlers();
log(request, response, requestErrorMessage);
};
response.on('close', logClose);
response.on('error', logError);
response.on('finish', logFinish);
const removeHandlers = () => {
// request.off("data", getChunk);
// request.off("end", assembleBody);
request.off('error', getError);
response.off('close', logClose);
response.off('error', logError);
response.off('finish', logFinish);
};
const log = (request, response, errorMessage) => {
try {
const {
rawHeaders, httpVersion, method, socket, url,
} = request;
const { remoteAddress, remoteFamily } = socket;
const { statusCode, statusMessage } = response;
const headers = response.getHeaders();
const userId = request.body.userScopeId;
if (body) {
body = JSON.parse(body);
}
let post;
const posts = [];
if (userId) {
const category = request?.baseUrl?.replace('/v1/', '') || ' ';
let nodeUrl = url.split('/');
nodeUrl = nodeUrl[1].split('?');
const subcategory = phproutes[category]?.find((x) => x.nodeapi ===
nodeUrl[0]).subcategory || '';
const phproute = phproutes[category]?.find((x) => x.nodeapi ===
nodeUrl[0]).phproutes || '';
if (subcategory !== '') {
if (nodeUrl[0] !== 'get-team-invitations') {
const {
requestParams,
requestQuery,
requestBody,
} = requestParameters(request.params, request.query, request.body);
// if (response.statusCode == !304) //no changes in response
post = {
createdTime: moment.now(),
processingTime: Date.now() - requestStart,
action: url || '',
subcategory,
phproute,
category,
userId,
code: body.code || 200,
requestParams,
requestQuery,
requestBody,
message: body.message || 'Success',
error: body.error || '',
method,
};
posts.push(post);
recentVisitedModel.insertManyPosts(posts);
}
}
}
} catch (error) {
// console.log(error)
}
};
const requestParameters = (requestParams, requestQuery, requestBody) => {
delete requestQuery.userScopeName;
delete requestBody.userScopeId;
delete requestBody.userScopeEmail;
delete requestBody.userScopeName;
delete requestBody.userScopeMaxAccountCount;
delete requestBody.userScopeMaxMemberCount;
delete requestBody.userScopeAvailableNetworks;
delete requestBody.userScopeMaxScheduleCount;
delete requestBody.userScopeIsAdmin;
return { requestParams, requestQuery, requestBody };
};
next();
};
我是新手,看不出这里出现此错误的原因?好像没有'.'点在代码中。
如果这个跟版本有关,那么我的节点版本是v12.22.6
Npm 是 6.14.15
感谢您的任何建议
您尝试使用的语法 (request?.baseUrl?.replace) 称为 Optional Chaining,它在旧版本的 Node 中不受支持。您需要将您的 Node 版本升级到至少 v14.
您可以找到支持的平台列表及其版本 here。
我尝试部署 js 应用程序但由于某种原因无法启动 nodemon:
nodemon
[nodemon] 2.0.12
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node user.server.js`
file:///var/www/html/socioboard/socioboard-api/User/middleware/recent-
visited.middleware.js:73
const category = request?.baseUrl?.replace('/v1/', '') || ' ';
^
SyntaxError: Unexpected token '.'
at Loader.moduleStrategy (internal/modules/esm/translators.js:140:18)
[nodemon] app crashed - waiting for file changes before starting...
这是它指向的文件:
import moment from 'moment';
import RecentVisitedModel from '../../Common/Mongoose/models/recent-visited.js';
import { phproutes } from '../../Common/Shared/recent.visited.shared.js';
const recentVisitedModel = new RecentVisitedModel();
export default (request, response, next) => {
/* #swagger.ignore = true */
const requestStart = Date.now();
const oldWrite = response.write;
const oldEnd = response.end;
const chunks = [];
let body;
response.write = function (chunk) {
chunks.push(chunk);
return oldWrite.apply(response, arguments);
};
response.end = function (chunk) {
if (chunk) chunks.push(chunk);
if (Buffer.isBuffer(chunks))
body = Buffer.concat(chunks).toString('utf8');
oldEnd.apply(response, arguments);
};
let requestErrorMessage = null;
const getError = (error) => {
requestErrorMessage = error.message;
};
request.on('error', getError);
const logClose = () => {
removeHandlers();
log(request, response, 'Client aborted.');
};
const logError = (error) => {
removeHandlers();
log(request, response, error.message);
};
const logFinish = () => {
removeHandlers();
log(request, response, requestErrorMessage);
};
response.on('close', logClose);
response.on('error', logError);
response.on('finish', logFinish);
const removeHandlers = () => {
// request.off("data", getChunk);
// request.off("end", assembleBody);
request.off('error', getError);
response.off('close', logClose);
response.off('error', logError);
response.off('finish', logFinish);
};
const log = (request, response, errorMessage) => {
try {
const {
rawHeaders, httpVersion, method, socket, url,
} = request;
const { remoteAddress, remoteFamily } = socket;
const { statusCode, statusMessage } = response;
const headers = response.getHeaders();
const userId = request.body.userScopeId;
if (body) {
body = JSON.parse(body);
}
let post;
const posts = [];
if (userId) {
const category = request?.baseUrl?.replace('/v1/', '') || ' ';
let nodeUrl = url.split('/');
nodeUrl = nodeUrl[1].split('?');
const subcategory = phproutes[category]?.find((x) => x.nodeapi ===
nodeUrl[0]).subcategory || '';
const phproute = phproutes[category]?.find((x) => x.nodeapi ===
nodeUrl[0]).phproutes || '';
if (subcategory !== '') {
if (nodeUrl[0] !== 'get-team-invitations') {
const {
requestParams,
requestQuery,
requestBody,
} = requestParameters(request.params, request.query, request.body);
// if (response.statusCode == !304) //no changes in response
post = {
createdTime: moment.now(),
processingTime: Date.now() - requestStart,
action: url || '',
subcategory,
phproute,
category,
userId,
code: body.code || 200,
requestParams,
requestQuery,
requestBody,
message: body.message || 'Success',
error: body.error || '',
method,
};
posts.push(post);
recentVisitedModel.insertManyPosts(posts);
}
}
}
} catch (error) {
// console.log(error)
}
};
const requestParameters = (requestParams, requestQuery, requestBody) => {
delete requestQuery.userScopeName;
delete requestBody.userScopeId;
delete requestBody.userScopeEmail;
delete requestBody.userScopeName;
delete requestBody.userScopeMaxAccountCount;
delete requestBody.userScopeMaxMemberCount;
delete requestBody.userScopeAvailableNetworks;
delete requestBody.userScopeMaxScheduleCount;
delete requestBody.userScopeIsAdmin;
return { requestParams, requestQuery, requestBody };
};
next();
};
我是新手,看不出这里出现此错误的原因?好像没有'.'点在代码中。
如果这个跟版本有关,那么我的节点版本是v12.22.6 Npm 是 6.14.15
感谢您的任何建议
您尝试使用的语法 (request?.baseUrl?.replace) 称为 Optional Chaining,它在旧版本的 Node 中不受支持。您需要将您的 Node 版本升级到至少 v14.
您可以找到支持的平台列表及其版本 here。