Express &引用;无法在模块外部使用导入语句";,即使是乔丹

Express &引用;无法在模块外部使用导入语句";,即使是乔丹,express,import,export,Express,Import,Export,我一直在尝试将一个简单的函数导入到我的express服务器中,该函数会说“废话”。 不幸的是,我得到了一个错误:SyntaxError:无法在模块外使用import语句。 我一整天都在用谷歌搜索这个问题,试图把文件改成.mjs或更多,但是不管我在网上找到了什么方法,服务器总是因为这个错误而崩溃 ExpressServer.js: //start express server const express = require("express"); const server = express();

我一直在尝试将一个简单的函数导入到我的express服务器中,该函数会说“废话”。 不幸的是,我得到了一个错误:SyntaxError:无法在模块外使用import语句。 我一整天都在用谷歌搜索这个问题,试图把文件改成.mjs或更多,但是不管我在网上找到了什么方法,服务器总是因为这个错误而崩溃

ExpressServer.js:

//start express server
const express = require("express");
const server = express();
const path = require("path");
var bodyParser = require("body-parser");
//Require functions that saves to DB
import {saveToDB} from './saveToDB.js';

// parse application/x-www-form-urlencoded
server.use(bodyParser.urlencoded({ extended: false }));

// parse application/json
server.use(bodyParser.json());

server.listen(5000, () => {
  console.log("express server is running..");
});

//Send form details to DB

server.get("/save", (req, res) => {
  phone = req.body.number;
  name = req.body.name;
  saveToDB();
});
import {saveToDB} from ('./saveToDB.js');
^^^^^^

SyntaxError: Cannot use import statement outside a module
saveToDB.js

const saveToDB = () => {
  console.log(`Blah blah blah`);
};

export default saveToDB;
错误:

//start express server
const express = require("express");
const server = express();
const path = require("path");
var bodyParser = require("body-parser");
//Require functions that saves to DB
import {saveToDB} from './saveToDB.js';

// parse application/x-www-form-urlencoded
server.use(bodyParser.urlencoded({ extended: false }));

// parse application/json
server.use(bodyParser.json());

server.listen(5000, () => {
  console.log("express server is running..");
});

//Send form details to DB

server.get("/save", (req, res) => {
  phone = req.body.number;
  name = req.body.name;
  saveToDB();
});
import {saveToDB} from ('./saveToDB.js');
^^^^^^

SyntaxError: Cannot use import statement outside a module

首先,检查您使用的节点版本。如果是13或更高,则支持ES6和import语句。否则,您必须更新节点版本或使用ES5方式(require)而不是导入

第二:如果版本是13或更高,您可以将文件扩展名更改为.mjs,或者将{“type”:“module”}添加到package.json文件中


第三:始终将导入语句放在文件的顶部。另外,我可能不会将require与import混用,但这是我个人的偏好。

问题已经解决,显然当您尝试在服务器端使用import而不是require时,问题就开始了。如果仍然希望使用导入,可以更新节点版本并在package.json中编辑类型

如果您选择使用第一个路由,您还必须更改文件中的所有“Require”以进行导入,否则您将得到“ReferenceError:Require未定义”

更容易的解决办法是改变:

import {saveToDB} from './saveToDB.js';

在导出的模块中,使用旧的导出方法:

module.exports = saveToDB;

您使用的是哪个节点版本<代码>节点-vImean@leonardfactoryv12.14.1谢谢,我已经将我的版本更新为14,现在在package.json文件中设置类型后不会发生此错误。我不知道为什么会这样,因为我过去进口了很多东西。无论如何,我现在得到“const express=require(“express”);^ReferenceError:require未定义”