NodeJS(服务器):ReferenceError:需要在类型:模块时未定义

Jam*_*mes 13 node.js node-modules server

在 Node 13.8 上,我尝试使用导入/导出。

例如: import {ChatClient, Message, MessageParser} from './chat-client/module.js';

但是当我这样做时,我得到

SyntaxError: Cannot use import statement outside a module

所以在我的 package.json 中我设置了"type" : "module"但是现在当我尝试使用const io = require('socket.io-client');

我得到 ReferenceError: require is not defined

有没有办法使用导入/导出和要求?

最初的错误,这是否意味着我必须将我的库包装在 NPM 库中?它是一个同时使用前端和后端的库,因此使用导入/导出很重要。

谢谢

Mr.*_*ous 7

Node >= 14 中的 ES 模块不支持 require。

但是,如果您想添加它,则必须将其添加到文件顶部:一切都应该正常工作。

import { createRequire } from 'module';
const require = createRequire(import.meta.url);
Run Code Online (Sandbox Code Playgroud)


Joh*_*ala 5

正如文档所说:

No require, exports, module.exports, __filename, __dirname
These CommonJS variables are not available in ES modules.
Run Code Online (Sandbox Code Playgroud)

https://nodejs.org/api/esm.html#esm_no_require_exports_module_exports_filename_dirname

您不能在本地同时使用两者。如果您想这样做,请使用 Babel 来转译您的代码。