我正在将 NextJS 与 typescript、mongo Atlas、mongoose、node 和 express 一起使用。
运行节点页面/服务器时出现以下错误:我已上传 package.json 文件并添加了 babel
从“快递”进口快递; ^^^^^^
SyntaxError:无法在 Object.Module 的 Module._compile (internal/modules/cjs/loader.js:1122:27) 的 wrapSafe (internal/modules/cjs/loader.js:1072:16) 的模块外使用 import 语句。 _extensions..js (internal/modules/cjs/loader.js:1178:10) 在 Module.load (internal/modules/cjs/loader.js:1002:32) 在 Function.Module._load (internal/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
这是我的 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}`));
包.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"
}
原文由 EverydayDeveloper 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 Node v12 开始,您可以在 — 中使用
.mjs
扩展或设置"type": "module"
package.json
。您需要使用
-experimental-modules
标志运行节点。您可以查看 SO 链接
或者您可以在项目的根目录中创建
.babelrc
文件。添加以下内容(以及您需要的任何其他 babel 预设,可以在此文件中添加):安装
babel-preset-env
使用现在,转到您的
server.js
文件所在的文件夹,然后运行使用:
或者您可以通过将以下代码添加到您的
package.json
文件来使用 npm start 运行:有一个使用 Custom Express Server + Typescript 在媒体上设置 Next.js 的教程 链接,这对您非常有帮助。