首页 > 解决方案 > 在 node.js 后端导入问题

问题描述

我正在学习一门新语言(Redux),但我遇到了这个问题

Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.

这里我添加了 package.json 的内容

...
import express from 'express';
^^^^^^

SyntaxError: Cannot use import statement outside a module

当他问我时,我添加了“type”:“module”,我遇到了这个问题:

(node:6392) ExperimentalWarning: The ESM module loader is experimental.
internal/modules/run_main.js:54
    internalBinding('errors').triggerUncaughtException(
                          ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 
...\sa\backend\data' imported from 
...\sa\backend\server.js
at finalizeResolution (internal/modules/esm/resolve.js:259:11)
at moduleResolve (internal/modules/esm/resolve.js:636:10)
at Loader.defaultResolve [as _resolve] 
(internal/modules/esm/resolve.js:726:11)
at Loader.resolve (internal/modules/esm/loader.js:97:40)
at Loader.getModuleJob (internal/modules/esm/loader.js:243:28)
at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:47:40)
at link (internal/modules/esm/module_job.js:46:36) {
code: 'ERR_MODULE_NOT_FOUND'
}

指定在前端 React 导入正常工作将很有用。

包.json

{
 "name": "tryredux",
 "version": "1.0.0",
 "type": "module",
 "description": "\"# tryredux\"",
 "main": "index.js",
 "dependencies": {
   "@babel/cli": "^7.10.5",
   "@babel/core": "^7.11.0",
   "@babel/node": "^7.10.5",
   "@babel/preset-env": "^7.10.4",
   "express": "^4.17.1",
   "nodemon": "^2.0.4",
   "react-router-dom": "^5.2.0"
 },
 "devDependencies": {
   "@babel/cli": "^7.8.4",
   "@babel/core": "^7.8.4",
   "@babel/node": "^7.8.4",
   "@babel/preset-env": "^7.8.4",
   "eslint": "^6.8.0",
   "eslint-config-airbnb": "^18.1.0",
   "eslint-plugin-import": "^2.20.1",
   "eslint-plugin-jsx-a11y": "^6.2.3",
   "eslint-plugin-react-hooks": "^2.5.1",
   "nodemon": "^2.0.2"
  },
  "scripts": {
    "start": "nodemon --watch backend --exec babelnode backend/server.js"
  },
  "author": "",
  "license": "ISC"
}

标签: redux

解决方案


这里的答案解释得很简洁:

https://stackoverflow.com/a/45854500/2361500

在节点中,默认是用于模块处理的 commonjs 语法。您可能会考虑切换到 require()


推荐阅读