[英]NodeJS (Server): ReferenceError: require is not defined when type: module
在节点 13.8 上,我正在尝试使用导入/导出。
EG: 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 库中? 这是一个同时使用前端和后端的库,因此使用导入/导出很重要。
谢谢
正如文档所说:
No require, exports, module.exports, __filename, __dirname
These CommonJS variables are not available in ES modules.
https://nodejs.org/api/esm.html#esm_no_require_exports_module_exports_filename_dirname
你不能同时使用两者。 如果您想这样做,请使用 Babel 来转换您的代码。
Node >= 14 中的 ES 模块不支持 require。
但是,如果你想添加它,你必须在你的文件的顶部添加它:一切都应该工作正常。
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
几点:
.mjs
而不是.js
。require
。如果您使用 {"type":"module"},您将无法在您的项目中使用require function。 因此,如果您想同时使用require和import ,则需要在package.json中添加以下属性。
"babel": {
"presets": [
"stage-3",
"latest"
]
}
"babel-preset-latest": "^6.16.0"
"babel-preset-stage-3": "^6.5.0"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.