【问题标题】:ParcelJS does not bundle imported js libraryParcelJS 不捆绑导入的 js 库
【发布时间】:2022-01-06 17:49:02
【问题描述】:

我有一个简单的 NodeJS 应用程序(一个 Cloudflare Worker)。

在主要的打字稿文件 (index.ts) 中,我导入了处理程序模块,它的第一行是: const Monitor = import('ping-monitor')

ping-monitor 是 package.json 中的一个依赖:

"dependencies": {
    "ping-monitor": "^0.6.2"
  }

现在当我运行parcel build src/index.ts 时, dist 中的输出有: var $1ZQrD$pingmonitor = require("ping-monitor");

所以ping-monitor 的内容没有正确捆绑。当我尝试通过wrangler dev(输出为dist/worker.js)在本地运行它时,它会抱怨:Uncaught ReferenceError: require is not defined

如何告诉 ParcelJS 将 ping-monitor 捆绑到输出中?

【问题讨论】:

  • 这是什么语法? const Monitor = import('ping-monitor')....不应该是const Monitor = require('ping-monitor')吗?
  • 我不确定。 linter 抱怨require 所以不得不在那里使用import

标签: javascript node.js typescript parceljs cloudflare-workers


【解决方案1】:

默认情况下,parcel 不会为 nodejs 构建目标捆绑任何依赖项。如果要捆绑所有依赖项,可以使用includeNodeModules 选项(请参阅docs),如下所示:

{
   ...
   "main": "dist/worker.js",
   "targets" {
      "main": {
         "includeNodeModules": true
      }
   }
}

(您还可以指定要包含的模块的“白名单”)。

【讨论】:

    猜你喜欢
    • 2019-06-27
    • 2020-02-28
    • 2020-11-10
    • 2021-12-29
    • 1970-01-01
    • 2019-01-31
    • 2019-07-16
    • 2021-06-01
    • 2021-11-30
    相关资源
    最近更新 更多