如何在工作线程中使用ES6导入?
我尝试在Node.js环境中的工作线程中使用ES6导入语法。但是,我遇到了import语句的问题。下面是我的代码的简化版本:app.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的特性。在不转换代码的情况下,实现这一点的正确方法是什么?
1条答案
按热度按时间cwxwcias1#
我试着运行你的代码,它运行成功,没有问题,网址返回
{"value":1000,"message":"running successfully"}
(我改变循环测试)文件结构:
app.js
工作线程
|child_thread.js
package.json
package.json:
字符串
我猜可能是在你的worker_thread/child_thread. js中node.js找不到你的package.json来知道它使用的是ES6,请告诉我在尝试重现这个错误时是否做错了什么:D