首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在未安装parcel的情况下,esbuild失败

在未安装parcel的情况下,esbuild失败
EN

Stack Overflow用户
提问于 2020-10-24 08:46:15
回答 1查看 651关注 0票数 0

使用esbuild的项目失败的原因如下...

代码语言:javascript
复制
node_modules/htmlparser2/lib/Parser.js:133:36: error: Could not resolve "events" (set platform to "node" when building for node)
require("inherits")(Parser, require("events").EventEmitter);
                                    ~~~~~~~~
1 error
Error: Build failed with 1 error:
node_modules/htmlparser2/lib/Parser.js:133:36: error: Could not resolve "events" (set platform to "node" when building for node)
    at failureErrorWithLog (/Volumes/DUMBLEDORE1/Users/fficnar/Projects/Shared Projects/mablung-virtual-pug/node_modules/esbuild/lib/main.js:640:15)
    at /Volumes/DUMBLEDORE1/Users/fficnar/Projects/Shared Projects/mablung-virtual-pug/node_modules/esbuild/lib/main.js:504:31
    at handleIncomingPacket (/Volumes/DUMBLEDORE1/Users/fficnar/Projects/Shared Projects/mablung-virtual-pug/node_modules/esbuild/lib/main.js:486:9)
    at Socket.readFromStdout (/Volumes/DUMBLEDORE1/Users/fficnar/Projects/Shared Projects/mablung-virtual-pug/node_modules/esbuild/lib/main.js:429:7)
    at Socket.emit (events.js:314:20)
    at addChunk (_stream_readable.js:303:12)
    at readableAddChunk (_stream_readable.js:279:9)
    at Socket.Readable.push (_stream_readable.js:218:10)
    at Pipe.onStreamRead (internal/stream_base_commons.js:188:23) {
  errors: [
    {
      location: [Object],
      text: 'Could not resolve "events" (set platform to "node" when building for node)'
    }
  ],
  warnings: []
}

..。但如果安装了parcel ...

代码语言:javascript
复制
npm install --save-dev parcel-bundler

..。它成功了。

测试是..。

代码语言:javascript
复制
import '@virtualpatterns/mablung-source-map-support/install'
import _Bundler from 'esbuild'
import Path from 'path'

const { 'build': Bundle } = _Bundler
const FilePath = __filePath
const Require = __require

async function main() {

  try {

    await Bundle({
      'entryPoints': [ Require.resolve('../library/utility.js') ],
      'outfile': `process/esbuild${Path.extname(FilePath)}`,
      'minify': false,
      'bundle': true
    })
    
  } catch (error) {
    console.error(error)
  }

}

main()

..。但我也尝试过从命令行运行以下命令,但出现了相同的错误(sans堆栈跟踪) ...

代码语言:javascript
复制
esbuild distributable-esmodule/library/utility.js --bundle --outdir=process/esbuild --sourcemap --platform=browser --log-level=info --strict
node_modules/htmlparser2/lib/Parser.js:133:36: error: Could not resolve "events" (set platform to "node" when building for node)
require("inherits")(Parser, require("events").EventEmitter);
                                    ~~~~~~~~
1 error

令人不快的require("events")来自html-to-vdom。我的utility.js很小,包含以下导入的...

代码语言:javascript
复制
import _ConvertToVirtualNode from 'html-to-vdom'
import CreateVirtualNode from 'virtual-dom/h.js'
import VirtualNode from 'virtual-dom/vnode/vnode.js'
import VirtualText from 'virtual-dom/vnode/vtext.js'

我使用的是esbuild v0.7.19。帮助。我还应该提供什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-24 15:17:36

由于错误消息显示为set platform to "node" when building for node,我认为既然您没有这样做,这意味着您是为浏览器绑定的,而不是为节点绑定的。events包内置于节点中,但未内置于浏览器中。

看起来parcel-bundler依赖于node-libs-browser,而crypto-browserify又依赖于events。这解释了为什么安装Parcel会修复此错误。如果您的项目需要依赖于events包(https://www.npmjs.com/package/events),您应该自己安装它,以便它成为您项目的一部分:

代码语言:javascript
复制
npm install events
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64508912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档