web-dev-qa-db-ja.com

モジュールの外部ではインポート文を使用できません

TypeJS、mongo Atlas、mongoose、nodeおよびexpressでNextJSを使用しています。

Node pages/serverを実行すると、次のエラーが発生します。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)at Module.load(internal/modules/cjs/loader.js:1002:32)at Function.Module._load(internal/modules/cjs /loader.js:901:14)function.executeUserEntryPoint [as runMain](internal/modules/run_main.js:74:12)at 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}`));

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

次の解決策が私にとってうまくいきました。

  • 必要なパッケージをインストールする

    npm install 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はこの場合のファイルです。

これがうまくいくことを願っています:)

0
Mekky_Mayata