如何在 Node.js 的工作线程中使用 ES6 导入?

问题描述 投票:0回答:1

如何在工作线程中使用ES6导入?

我正在尝试在 Node.js 环境中的工作线程中使用 ES6 导入语法。但是,我遇到了导入声明的问题。这是我的代码的简化版本: 应用程序.js

import express from 'express'
import bodyParser from 'body-parser'
import os from 'os'
import { Worker } from 'worker_threads'

const app = express()
const router = express.Router()
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
app.use('/api', router)
router.get('/worker-thread', (req, res) => {
  const worker = new Worker('./worker_thread/index.js')
  worker.on('message', (j) => {
    return res.status(200).json({ value: j, message: 'running successfully' })
  })
})
app.listen(4000, () => {
  console.log('PORT RUNNING ON 4000')
})

worker_thread.js

import { parentPort } from 'worker_threads';

let j = 0;

for (let i = 0; i < 5000000000; i++) {
  j++;
}

parentPort.postMessage(j);

运行此代码会导致语法错误:无法在模块外部使用 import 语句。我想在工作线程中利用 ES6 功能。在不转译代码的情况下实现此目的的正确方法是什么?

node.js ecmascript-6 es6-modules worker-thread node-worker-threads
1个回答
0
投票

我尝试运行你的代码,它运行成功,没有问题,网址返回

{"value":1000,"message":"running successfully"}
(我更改了测试循环)

文件结构:

app.js

工作线程

|child_thread.js

package.json

package.json:

{
  "type": "module",
  "dependencies": {
    "body-parser": "^1.20.2",
    "express": "^4.18.2"
  }
}

我猜也许在你的worker_thread/child_thread.js中,node.js找不到你的package.json来知道它正在使用ES6,请告诉我在尝试重现此错误时是否做错了什么:D

© www.soinside.com 2019 - 2024. All rights reserved.