#javascript #node.js #require
#node.js
Вопрос:
internal.mjs:
import request from 'request-promise-native'
const rocketChatServer = 'http://localhost:3000';
const rocketChatAdminUserId = 'aobEdbYhXfu5hkeqG';
const rocketChatAdminAuthToken = '9HqLlyZOugoStsXCUfD_0YdwnNnunAJF8V47U3QHXSq';
export async function fetchUser (username) {
const rocketChatUser = await request({
url: `${rocketChatServer}/api/v1/users.info`,
method: 'GET',
qs: {
username: username
},
headers: {
'X-Auth-Token': rocketChatAdminAuthToken,
'X-User-Id': rocketChatAdminUserId
}
});
return rocketChatUser;
}
export async function loginUser (email, password) {
const response = await request({
url: `${rocketChatServer}/api/v1/login`,
method: 'POST',
json: {
user: email,
password: password
}
});
return response;
}
export async function createUser(username, name, email, password) {
const rocketChatUser = await request({
url: `${rocketChatServer}/api/v1/users.create`,
method: 'POST',
json: {
name,
email,
password,
username,
verified: true
},
headers: {
'X-Auth-Token': rocketChatAdminAuthToken,
'X-User-Id': rocketChatAdminUserId
}
});
return rocketChatUser;
}
export async function createOrLoginUser (username, name, email, password,) {
try {
const user = await fetchUser(username);
// Perfom login
return await loginUser(email, password);
} catch (ex) {
if (ex.statusCode === 400) {
// User does not exist, creating user
const user = await createUser(username, name, email, password);
// Perfom login
return await loginUser(email, password);
} else {
throw ex;
}
}
}
external.mjs:
import { createOrLoginUser } from './internal.mjs';
var express = require('express');
var app = express();
app.post('/login', async (req, res) => {
// ....CODE TO LOGIN USER
// Creating or login user into Rocket chat
try {
const response = await createOrLoginUser(user.username, user.firstName, user.email, user.password);
req.session.user = user;
// Saving the rocket.chat auth token and userId in the database
user.rocketchatAuthToken = response.data.authToken;
user.rocketchatUserId = response.data.userId;
await user.save();
res.send({ message: 'Login Successful'});
} catch (ex) {
console.log('Rocket.chat login failed');
}
})
Вывод:
me@test:~/node$ node --experimental-modules external.mjs
(node:7482) ExperimentalWarning: The ESM module loader is experimental.
ReferenceError: require is not defined
at file:///home/me/node/external.mjs:3:15
at ModuleJob.run (internal/loader/ModuleJob.js:94:14)
at <anonymous>
Внезапно мне пришлось иметь дело с node.js для некоторого тестирования, и я не испытывал node.js раньше.
Я не думаю, что у internal.mjs есть какие-либо проблемы, поскольку он не показывает ошибки при выполнении команды «node —experimental-modules internal.mjs». Но запуск его для external.mjs выдает ошибку, и я не мог решить ее в течение многих часов.
Как я могу решить эту ошибку, чтобы она компилировалась?
Комментарии:
2. Измените require для импорта, если вы используете mjs-файл.
Ответ №1:
Если вы собираетесь использовать новые модули ESM, не используйте require
, импортируйте express
:
Изменить:
var express = require('express');
Для
import express from 'express';
Комментарии:
1. Это сделало это. Спасибо.