J'utilise NextJS avec TypeScript, mongo Atlas, mangouste, node et express.
J'obtiens l'erreur suivante lorsque j'exécute les pages/serveur de nœud: j'ai téléchargé mon fichier package.json et j'ai également ajouté babel
import express de "express"; ^^^^^^
SyntaxError: Impossible d'utiliser l'instruction import en dehors d'un module sur wrapSafe (interne/modules/cjs/loader.js: 1072: 16) sur Module._compile (interne/modules/cjs/loader.js: 1122: 27) sur Object.Module. _extensions..js (interne/modules/cjs/loader.js: 1178: 10) à Module.load (interne/modules/cjs/loader.js: 1002: 32) à Function.Module._load (interne/modules/cjs /loader.js:901:14) à Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js: 74: 12) à internal/main/run_main_module.js: 18: 47
Voici mon code server.js:
import express from 'express';
import { connect, connection } from 'mongoose';
import morgan from 'morgan';
import path from 'path';
const app = express();
const PORT = process.env.PORT || 8080;
//Success
import routes from './routes/api.tsx';
const MONGODB_URI = 'xxx';
// const routes=require('./routes/api')
connect(MONGODB_URI ||'mongodb://localhost/success', {
useNewUrlParser: true,
useUnifiedTopology: true
});
connection.on('connected', () => {
console.log('Mongoose is connected');
});
const newBlogPost = new BlogPost(data); //instance of the model
app.use(morgan('tiny'));
app.use('/',routes)
app.listen(PORT, console.log(`Server is starting at ${PORT}`));
fichier package.json
{
"name": "la-sheild",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "next",
"build": "next build",
"start": "babel-node server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@types/express": "^4.17.2",
"@types/mongoose": "^5.7.1",
"axios": "^0.19.2",
"concurrently": "^5.1.0",
"express": "^4.17.1",
"mongoose": "^5.9.1",
"morgan": "^1.9.1",
"next": "^9.2.2",
"node": "^13.8.0",
"react": "^16.12.0",
"react-dom": "^16.12.0"
},
"devDependencies": {
"@babel/core": "^7.8.4",
"@babel/preset-env": "^7.8.4",
"@babel/register": "^7.8.3",
"@types/node": "^13.7.4",
"@types/react": "^16.9.21",
"babel-cli": "^6.26.0",
"TypeScript": "^3.7.5"
},
"proxy": "http://localhost:8080"
}
La solution suivante a fonctionné pour moi;
installer les packages nécessaires
npm install nodemon @babel/core @babel/node @babel/preset-env -D
créez un fichier . babelrc dans le répertoire de travail et collez-y ce qui suit
{
"presets": [
"@babel/preset-env" ]
}```
enfin, ajoutez le code ci-dessous à "scripts"
dans package.json
"dev": "nodemon —exec babel-node server.js"
où server.js est votre fichier dans ce cas.
J'espère que cela fonctionne :)