Uncaught TypeError: Не удалось разрешить спецификатор модуля (Node.js, Express, nact) - PullRequest
0 голосов
/ 02 февраля 2020

Я создаю простое приложение, которое демонстрирует модель актера с использованием библиотеки Nact .

Ошибка, с которой я сейчас имею дело:

Uncaught TypeError: Не удалось разрешить спецификатор модуля "nact". Относительные ссылки должны начинаться с "/", "./" или "../"

Вот пакет. json:

 {
  "name": "actor-model-with-nact-demo-020120",
  "version": "1.0.0",
  "description": "Adam's Actor Model with Nact Demo",
  "main": "server.js",
  "dependencies": {
    "express": "^4.17.1",
    "nact": "^7.2.2",
    "nodemon": "^2.0.2"
  },
  "devDependencies": {},
  "scripts": {
    "dev": "nodemon ./server.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Adam Dudley",
  "license": "MIT"
}

Вот сервер . js:

const express = require('express')
const path = require('path')

const app = express()
const port = process.env.PORT || '8000'

app.use(express.static(__dirname + '/public'))
app.use('/static', express.static('./static/'))

app.get('/static', function(req, res) {
  res.sendFile(path.join(__dirname + '/static/app.js'))
})

app.get('/', function(req, res) {
  res.sendFile(__dirname + '/public/views/index.html')
})

app.listen(port, () => {
  console.log(`Listening to requests on http://localhost:${port}`)
})

Вот индекс. html:

  <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>Adam's Actor Model with Nact Demo</title>
      </head>
      <body>
        <h1>Adam's Actor Model with Nact Demo</h1>
        <script src="static/app.js" type="module"></script>
      </body>
    </html>

Вот приложение. js:

import { start, dispatch, stop, spawnStateless } from 'nact'

const system = start()

const greeter = spawnStateless(
  system,
  (msg, ctx) => console.log(`Hello ${msg.name}`),
  'greeter'
)

dispatch(greeter, { name: 'World!' })

1 Ответ

0 голосов
/ 22 марта 2020

Автор здесь. Я не совсем понимаю, в чем именно заключается проблема, но в ее нынешнем виде Nact официально поддерживается только на стороне сервера. Вы , возможно, сможете заставить его работать в браузере, но вам, возможно, придется заполнить setImmediate, чтобы сделать это.

Поскольку Nact является обычным js модулем, вам потребуется пакет, такой как Parcel или Webpack, чтобы иметь возможность преобразовать библиотеку в соответствующий формат модуля.

...