当前位置: 首页 > 知识库问答 >
问题:

不能在模块外使用import语句

甄正信
2023-03-14

我正在使用NextJS与typescript,mongo Atlas,mongoose,node和Express。

当我运行node Pages/Server时,我收到以下错误:我已经上载了我的package.json文件,并且还添加了babel

从“express”导入express;^^^^^^

SyntaxError:不能在模块外部使用导入语句,位于wrapSafe(内部/modules/cjs/loader.js:1072:16)位于module._compile(内部/modules/cjs/loader.js:1122:27)位于object.module._extensions.js(内部/modules/cjs/loader.js:1178:10)位于module.load(内部/modules/cjs/loader.js:1002:32)位于function.module._load(内部

这是我的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}`));

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"
}

共有2个答案

吉毅
2023-03-14

下面的解决方案对我有效;

>

  • 安装所需的软件包

    NPM安装nodemon@babel/core@babel/node@babel/preset-env-d

    在工作目录中创建一个.babelrc文件,并在其中粘贴以下内容

    {
    "presets": [
    "@babel/preset-env" ]
    }
    
    

    最后,将下面的代码添加到package.json中的“scripts”

    “dev”:“nodemon-exec babel-node server.js”在本例中,server.js是您的文件。

    希望这能起作用:)

  • 莫宁
    2023-03-14

    从NodeV12开始,您可以使用.mjs扩展名,也可以在package.json中设置“type”:“module”

    并且需要使用--experimental-modules标志运行节点。

    node --experimental-modules server.mjs
    

    您可以查看SO链接

    也可以在项目的根目录中创建.babelrc文件。添加以下内容(以及您需要的任何其他babel预置,都可以添加到此文件中):

    {
        "presets": ["env"]
    }
    

    使用以下方法安装babel-preset-env

    npm install babel-preset-env
    npm install babel-cli -g
    
    # OR
    
    yarn add babel-preset-env
    yarn global add babel-cli
    

    现在,转到server.js文件所在的文件夹,然后

    运行使用:

    babel-node fileName.js
    

    或者,您可以通过向package.json文件中添加以下代码来使用npm start运行:

    "scripts": {
        "start": "babel-node server.js"
    }
    

    有一个使用自定义Express Server+Typescript在介质上设置Next.js的教程链接,对您非常有帮助。

     类似资料:
    • 问题内容: 我有一个ApolloServer项目给我带来麻烦,所以我认为我可能会更新它,并且在使用最新的Babel时遇到问题。我的“ index.js”是: 当我运行它时,出现错误“ SyntaxError:无法在模块外部使用import语句”。首先,我尝试做一些事情以说服TPTB *,这是一个模块(没有成功)。因此,我将“导入”更改为“需要”,并且此方法可行。 但是现在我在其他文件中有大约两打“

    • 我的html文件中有这个脚本: 我得到以下错误:Uncapted SyntaxError:无法在模块外使用import语句 在后面的代码中: 我这样做是为了以后能够运行这一行:

    • 如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用from sys import argv语句。如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。这对于所有模块都适用。一般说来,应该避免使用from..import而使用import语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。

    • 今天我决定尝试学习React,但每当我尝试导入以下两个模块时: 我得到一个错误: 未捕获的SyntaxError:无法在模块外部使用导入语句 以下是我尝试创建React程序所采取的步骤: 安装NodeJS 为什么我会出现这个错误,我该如何修复它?

    • 我正在将代码转换为使用nodemon来利用TypeScript。 在我的软件包中。json: 以及伪api/server。ts文件: 但是当运行时: 我在谷歌上搜索了一下,最后来到这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import 是否有一种解决方法可以继续使用这种导入?

    • 我有一个React应用程序(不使用createreact应用程序),它是使用TypeScript、Jest、Webpack和Babel构建的。当尝试运行“纱线玩笑”时,我得到以下错误: 我已经尝试删除所有软件包并重新添加它们。它没有解决这个问题。我已经看了类似的问题和留档,仍然误解了一些东西。我甚至按照另一个指南从头开始设置这个环境,并且仍然用我的代码收到了这个问题。 依赖项包括。。。 组件的导入