Node.js 无法在模块外部使用导入语句
我将NextJS与typescript、mongo Atlas、mongoose、node和express一起使用 运行节点页/服务器时,我遇到以下错误: 我已经上传了package.json文件,还添加了babel 从“快递”进口快递^^^^^^ SyntaxError:无法在模块外部使用导入语句 在wrapSafe(内部/modules/cjs/loader.js:1072:16) at模块编译(内部/modules/cjs/loader.js:1122:27) at Object.Module._extensions..js(internal/modules/cjs/loader.js:1178:10) at Module.load(内部/modules/cjs/loader.js:1002:32) at Function.Module._load(内部/modules/cjs/loader.js:901:14) 在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:74:12) 在internal/main/run_main_module.js:18:47 这是我的server.js代码:Node.js 无法在模块外部使用导入语句,node.js,mongodb,typescript,express,next.js,Node.js,Mongodb,Typescript,Express,Next.js,我将NextJS与typescript、mongo Atlas、mongoose、node和express一起使用 运行节点页/服务器时,我遇到以下错误: 我已经上传了package.json文件,还添加了babel 从“快递”进口快递^^^^^^ SyntaxError:无法在模块外部使用导入语句 在wrapSafe(内部/modules/cjs/loader.js:1072:16) at模块编译(内部/modules/cjs/loader.js:1122:27) at Object.Modu
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}`));
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"
}
从节点v12开始,您可以使用
.mjs
扩展名,也可以在包.json
中设置“type”:“module”
您需要使用--experimentalmodules
标志运行节点
节点——实验模块服务器.mjs
你可以查一下
或者,您可以在项目的根目录中创建.babelrc
文件。
添加以下内容(以及您需要的任何其他巴别塔预设,可以添加到此文件中):
使用安装babel预设环境
npm安装巴别塔预设环境
npm安装babel cli-g
#或
纱线添加巴别塔预设环境
纱线全球添加巴别塔cli
现在,转到您的server.js
文件所在的文件夹并
运行时使用:
babel节点fileName.js
或者,您可以使用npm start运行,方法是将以下代码添加到package.json
文件中:
"scripts": {
"start": "babel-node server.js"
}
有一个教程介绍如何在介质上设置Next.js和自定义的Express Server+Typescript,这将对您非常有帮助
“脚本”:{
“开始”:“babel node server.js”
}
添加以上内容对我有效以下解决方案对我有效
- 安装所需的软件包
npm安装nodemon@babel/core@babel/node@babel/preset env-D
- 在工作目录中创建一个.babelrc文件,并在其中粘贴以下内容
{ "presets": [ "@babel/preset-env" ] }
- 最后,将下面的代码添加到package.json中的
“scripts”
其中,server.js是本例中的文件“dev”:“nodemon-exec babel node server.js”
希望这能奏效:)以下是基于的解决方案 为express创建另一个配置文件,因为节点正在使用common.js模块,但如果您检查
tsconfig.json
,您将看到以下内容:“模块”:“esnext”
tsconfig.server.json
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "dist",
"noEmit": false
},
"include": ["server"]
}
按如下方式设置脚本:
"start": "ts-node --project tsconfig.server.json server.ts"
我首先添加了tye:module,但仍然面临另一个错误。最后,它对我的工作问题是,我正在运行我的Driver.js文件,这就是为什么我会遇到这个问题。我运行我的Driver.ts文件,它的工作对我来说没问题。
但是在使用extension.ts文件运行my之后,它的工作就完成了。
您安装了express吗?i、 e.package.json文件中是否存在express?是的,它是:“依赖项”:{“@types/express”:“^4.17.2”,“@types/mongoose”:“^5.7.1”,“axios”:“^0.19.2”,“并发”:“^5.1.0”,“express”:“^4.17.1”,@deepkakkar您是否启用了ES6导入?能否共享您的package.json文件?我没有webpack.config.jsfile@Rebel这里有一个关于babel的教程,谢谢你写这篇关于babel的文章。其他每一件事都是关于在package.json中添加“type”:“module”,这不是解决方案babel的步骤对我有效!这对我有效。
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "dist",
"noEmit": false
},
"include": ["server"]
}
"start": "ts-node --project tsconfig.server.json server.ts"