提问人:Amitprj 提问时间:11/16/2023 最后编辑:Amitprj 更新时间:11/17/2023 访问量:49
如何在 Node.js 的工作线程中使用 ES6 导入?
How to use ES6 import in worker thread in Node.js?
问:
如何在工作线程中使用 ES6 导入?
我正在尝试在 Node.js 环境中的工作线程中使用 ES6 导入语法。但是,我遇到了 import 语句的问题。这是我的代码的简化版本: 应用.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);
运行此代码会导致 SyntaxError: Cannot use import statement outside a module。我想在工作线程中利用 ES6 功能。在不转译代码的情况下实现此目的的正确方法是什么?
答:
2赞
LmanTW
11/17/2023
#1
我尝试运行您的代码,它成功运行没有问题,url返回(我更改循环进行测试){"value":1000,"message":"running successfully"}
文件结构:
应用.js
worker_thread
|child_thread.js
package.json
package.json:
{
"type": "module",
"dependencies": {
"body-parser": "^1.20.2",
"express": "^4.18.2"
}
}
我猜也许在您的 worker_thread/child_thread.js 节点中.js找不到您的package.json知道它正在使用 ES6,请告诉我在尝试重现此错误时是否做错了什么:D
评论
.mjs
.js
"type": "module"