type:module导致:SyntaxError:无法在模块外使用import语句



我已经研究过这个错误——显然应该通过添加";类型":"模块";或者将js文件重命名为.mjs-都不起作用。请帮忙!我一直在试图弄清楚它为什么会导致这个错误:从"导入应用程序/server.js;SyntaxError:不能在模块外使用import语句此外,所有文件都位于同一文件夹中,因此不应该存在任何范围问题。

索引.js

import app from './server.js';
import mongodb from "mongodb";
import dotenv from "dotenv";
async function main(){

dotenv.config();
const client = new mongodb.MongoClient(
preocess.env.MOVIEREVIEWS_DB_URI
);
const port = process.env.PORT || 8000;
try {
await client.connect()
app.listen(port, () => {
console.log('server is running on port: ' + port);
});
}catch(e){
console.error(e);
process.exit(1)
}
}
main().catch(console.error);

server.js

import express from 'express';
import cors from 'cors';
import movies from './api/movies.route.js';
const app = express();
app.use(cors());
app.use(express.json());
app.use("api/v1/movies", movies);
app.use("*", (req, res) => {
res.status(404).json({error: "not found"});
});
export default app;

package.json

{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.0.3",
"express": "^4.18.1",
"mongodb": "^4.10.0"
}
}

我认为问题在于导入dotenv的方式。请参阅此处如何使用ES6导入dotenv并尝试这样使用它。

import * as dotenv from 'dotenv'

最新更新