ai didi

node.js - 使用 "ReferenceError: require is not defined"编译时如何修复 "--experimental-modules"错误?

转载 作者:搜寻专家 更新时间:2023-11-01 00:48:17 24 4
gpt4 key购买 nike

内部.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;
}
}
}

外部.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 运行它给了我一个错误,我无法解决它好几个小时。

如何解决此错误以使其通过编译?

最佳答案

如果您要使用新的 ESM 模块,请不要使用 require,导入 express:

改变:

var express = require('express');

import express from 'express';

关于node.js - 使用 "ReferenceError: require is not defined"编译时如何修复 "--experimental-modules"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910157/

24 4 0
文章推荐: javascript - 如何从 Javascript 中的另一个函数访问对象
文章推荐: php - 如何在 PHP 中定义方法链
文章推荐: PHP静态函数self::in joomla JFactory类解释?
文章推荐: node.js - 如果任何测试失败,Jest 是否以状态 1 退出是标准的吗?
搜寻专家
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com