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