为了账号安全,请及时绑定邮箱和手机立即绑定

错误 [ERR_UNSUPPORTED_DIR_IMPORT]:尝试在本地启动 Nodej

错误 [ERR_UNSUPPORTED_DIR_IMPORT]:尝试在本地启动 Nodej

皈依舞 2023-05-25 16:43:24
我在尝试将我的应用程序部署到 Heroku 时陷入了一个循环。import cors from 'cors'由于“无法在 Common JS 中加载 ES6 模块”错误,我的导入语句(例如)似乎阻止了应用程序在生产环境中启动。在本地它运行得很好。"type": "module"但是,当我尝试通过添加到我的错误来解决上述错误时,package.json我得到了一组全新的错误,应用程序将不再在本地运行。我相信这个错误是由于我初始化 sequelize 和相关模型的方式造成的,但我不确定。我想解决这个错误,但需要帮助导入新语法……我想。错误,package.json并index.js包括在下面。错误文本[nodemon] starting `babel-node src/index.js`internal/process/esm_loader.js:74    internalBinding('errors').triggerUncaughtException(                              ^Error [ERR_UNSUPPORTED_DIR_IMPORT]: Directory import '/Users/jeff/Clients/Bummer/Code/Server/src/models' is not supported resolving ES modules imported from /Users/jeff/Clients/Bummer/Code/Server/src/index.js    at finalizeResolution (internal/modules/esm/resolve.js:272:17)    at moduleResolve (internal/modules/esm/resolve.js:699:10)    at Loader.defaultResolve [as _resolve] (internal/modules/esm/resolve.js:810:11)    at Loader.resolve (internal/modules/esm/loader.js:85:40)    at Loader.getModuleJob (internal/modules/esm/loader.js:229:28)    at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:51:40)    at link (internal/modules/esm/module_job.js:50:36) {  code: 'ERR_UNSUPPORTED_DIR_IMPORT',  url: 'file:///Users/jeff/Clients/Bummer/Code/Server/src/models'}[nodemon] app crashed - waiting for file changes before starting...
查看完整描述

5 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

明确地指向您的主文件(通常是index.js)。例如

import ... from './models'          // ❌
import ... from './models/index.js' // ✅

替代方式(请参阅下面的更新):

使用--experimental-specifier-resolution=node标志。例如:

node --experimental-specifier-resolution=node main.js

更新(Node.js v19+):

Node.js 已删除--experimental-specifier-resolution标志。它的功能现在可以通过自定义加载器来实现。


查看完整回答
反对 回复 2023-05-25
?
阿晨1998

TA贡献2037条经验 获得超6个赞

尝试将--experimental-specifier-resolution=node标志添加到您的start脚本中package.json,特别是如果您在本地运行时使用此标志 - 这是 Heroku 将用来启动您的服务器的脚本。

scripts": {
    "start": "node --experimental-specifier-resolution=node index",
    ...
},


查看完整回答
反对 回复 2023-05-25
?
Helenr

TA贡献1780条经验 获得超4个赞

在 Node.js 中,import 语句只允许在 ES 模块中使用。因此,目录导入在 Node.js 中不起作用。


查看完整回答
反对 回复 2023-05-25
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

尝试添加此代码package.json

"scripts": {  
    "start": "node --experimental-specifier-resolution=node src/index"
    }


查看完整回答
反对 回复 2023-05-25
?
互换的青春

TA贡献1797条经验 获得超6个赞

选项 1 "type": "module", 应该在 "main" 之前:

选项:2 将源文件更新为 .mjs 扩展名


查看完整回答
反对 回复 2023-05-25
  • 5 回答
  • 0 关注
  • 654 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信