繁体   English   中英

如何在 server.js 中导入 ES 模块

[英]How to import ES Module in a server.js

"type": "module"不知道在运行nodemon server.js时如何解决此错误

从“esm”导入 esm

某处?

package.json

{
  "name": "facebook-back",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "server.js"
  },
  "author": "Ethan",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "gridfs-stream": "^1.1.1",
    "mongoose": "^5.11.8",
    "multer": "^1.4.2",
    "multer-gridfs-storage": "^4.2.0",
    "path": "^0.12.7",
    "pusher": "^4.0.2"
  }
}

端子 output

$ nodemon server.js                                                                             
[nodemon] 2.0.6
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
internal/modules/cjs/loader.js:1149
      throw new ERR_REQUIRE_ESM(filename, parentPath, packageJsonPath);
      ^

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /Users/ethanding/Desktop/projects/facebook/facebook-back/server.js
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1149:13)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47 {
  code: 'ERR_REQUIRE_ESM'
}
[nodemon] app crashed - waiting for file changes before starting...

服务器.js

import express from 'express'
import mongoose from 'mongoose'
import cors from 'cors'
import multer from 'multer'
import GridFsStorage from 'multer-gridfs-storage'
import Grid from 'gridfs-stream'
import bodyParser from 'body-parser'
import path from 'path'
import Pusher from 'pusher'

Grid.mongo = mongoose.mongo

// app config
const app = express()
const port = process.env.PORT || 9000

// middlewares
app.use(bodyParser.json())
app.use(cors())

//api routes
app.get('/', (req, res) => res.status(200).send('hello world'))

// listen
app.listen(port, () => console.log(`Listening to port ${port}`))

如果你写一个模块:Use.mjs

如果不是:您必须使用像 babel、webpack 或 typescript 之类的转译器(我强烈推荐后者)才能使用 emac 模块语法(导入...、导出...)

你可以 在这里找到更多信息

谷歌也是你最好的朋友: NodeJS“必须使用导入来加载 ES 模块”

以及来自https://github.com/nodejs/node/issues/17063node --experimental-modules apple.mjs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM