javascript - Node : ReferenceError: require is not defined

标签 javascript node.js

源代码是:

const Sequelize = require('sequelize');
const sequelize = new Sequelize(process.env["DSN"]);

当尝试通过 Node 执行时(我坚持认为,我不是试图在浏览器中执行此代码),我得到:

$ node Sequelize.js
file:///Users/snwfdhmp/project/Sequelize.js:1
const Sequelize = require('sequelize');
                  ^

ReferenceError: require is not defined
    at file:///Users/snwfdhmp/project/Sequelize.js:1:19
    at ModuleJob.run (internal/modules/esm/module_job.js:138:23)
    at async Loader.import (internal/modules/esm/loader.js:178:24)

为什么会发生这种情况?互联网上的每篇文章都说“不要在浏览器中使用 require()”,但我没有使用浏览器。

我在 macOS 10.15.5 上使用 Node v14.4.0。

最佳答案

如果您在 package.json 中定义了 "type": "module",则应将其删除。

原因是,某些 CommonJS 变量在 ES 模块中不可用( reference ), 这些是:

require
exports
module.exports
__filename
__dirname

但是,可以使用 module.createRequire()require 导入到 ES 模块中.

关于javascript - Node : ReferenceError: require is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62308545/

相关文章:

javascript - offsetParent 与 parentElement 或 parentNode 的区别

javascript - 异步存储返回函数而不是值

javascript - 如何在 JavaScript 中查找目标 id?

javascript - 如何在ejs中使用带有字符串的if语句?

json - Node.js eval var json 解析

javascript - 输入文本框验证在 Vue js 中不起作用

javascript - Backbone Jaydata Odata

javascript - 在这种情况下,为什么 Sequelize 对象没有 setOwner 方法?

javascript - Electron worker : Hidden BrowserWindow causes front to lag

javascript - 将参数传递给 JS 命令行实用程序(Node 或 Narwhal)