无法在我的 Nuxt 项目中使用“node”命令导入 ES 模块

Posted

技术标签:

【中文标题】无法在我的 Nuxt 项目中使用“node”命令导入 ES 模块【英文标题】:Cannot import ES modules with "node" command in my Nuxt project 【发布时间】:2021-06-18 10:54:02 【问题描述】: 我的nuxt项目使用nuxt.config.js中定义的serverMiddleware作为服务器中间件:['~/api'] 我的 api 目录中的所有文件都使用 import 和 export 语句,并且在我运行 npm run dev 时可以正常工作 我还有一个种子目录,其中包含一堆数据库种子文件,每个文件都有importexport 语句 当我从package.json"seed:dev": "cross-env NODE_ENV=development node ./api/db/seeders" 运行它时,

我收到以下错误

(node:12212) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
/Users/zup/Desktop/code/ACTIVE/ch_v3_final/api/db/seeders/index.js:1
import feeds from './feeds-data'
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! ch@1.0.0 seed:dev: `cross-env NODE_ENV=development node ./api/db/seeders`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the ch@1.0.0 seed:dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/zup/.npm/_logs/2021-03-21T16_38_58_766Z-debug.log

如何像 nuxt 运行我的其他文件一样运行使用 import export 语句的数据库播种器?

【问题讨论】:

您可以在此处使用require 语法。 const feed = require('./feeds-data'); 它引用了其他文件,如db,其中充满了导入和导出语句,仍然报错,db文件包含核心数据库逻辑,是应用程序的一部分 【参考方案1】:

你的 Node.js 版本是多少?

根据具体情况,您有多个选项,详见此处:https://***.com/a/45854500/8816585

最简单的方法仍然是在你的package.json 中有一个"type": "module",正如错误告诉你的那样!

最新的 LTS 为:14.16.0,可能并非所有平台都支持,请注意。

PS:如果我没记错的话,它在 v15 中会更简单一些,但这个版本仍然是实验性的。

TLDR:与 Nuxt 没有任何关系。 ^^

【讨论】:

这与 nuxt 相关,因为作为 nuxt 一部分的文件运行时没有问题,例如,这里是一个演示 repo,我设置 github.com/slidenerd/nuxt-ws-content-bug 当你运行 npm run dev 时,这里一切正常,但是如果我的数据库中有从 package.json 运行的播种机,它们不适用于导入和导出,问题是我的播种机引用了使用 nuxt 运行的其他文件(导入导出语句没有问题) 有问题的是cross-env NODE_ENV=development node ./api/db/seeders,因此其中的node 和100% 与节点相关的错误。所有剩余的代码都运行良好。因此,如果您使用 Nuxt、在 AWS 上托管、使用 bcrypt 进行云计算或散列,那么这与这里无关(此外,Nuxt 工作得很好)。

以上是关于无法在我的 Nuxt 项目中使用“node”命令导入 ES 模块的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IP 地址上启动 nuxt 项目

如何从 nuxt.js 页头的 node_modules 文件夹中引用 js 文件

组织后端(Node)进程和使用这些进程的一部分的前端(Vue / Nuxt)的最佳方式

在 Nuxt 中使用最新的 SASS 和 @use

如何在 nuxt js 中使用 vuetify 作为插件?

Nuxt/TypeScript:无法访问 - TS2339:类型上不存在属性“XXX”