无法在我的 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
时可以正常工作
我还有一个种子目录,其中包含一堆数据库种子文件,每个文件都有import
和export
语句
当我从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 模块的主要内容,如果未能解决你的问题,请参考以下文章
如何从 nuxt.js 页头的 node_modules 文件夹中引用 js 文件