NodeJS browserify将不编译express js

e7arh2l6  于 2023-01-12  发布在  Node.js
关注(0)|答案(2)|浏览(134)

我写了一个非常基本的express.js应用程序。然后试图使它成为一个.js文件。Browserify编译整个东西到一个文件。但browserify编译的代码不工作。据我所知,browserify只是用模块代码替换require语句。错误是:

C:\Users\HP\n\express\app.js:27025
  __proto__: http.IncomingMessage.prototype
                                 ^

TypeError: Cannot read property 'prototype' of undefined
    at Object.__dirname.173.accepts (C:\Users\HP\n\express\app.js:27025:34)
    at s (C:\Users\HP\n\express\app.js:1:316)
    at C:\Users\HP\n\express\app.js:1:367
    at Object.__dirname.170../application (C:\Users\HP\n\express\app.js:26823:11)
    at s (C:\Users\HP\n\express\app.js:1:316)
    at C:\Users\HP\n\express\app.js:1:367
    at Object.__dirname.168../lib/express (C:\Users\HP\n\express\app.js:26154:18)
    at s (C:\Users\HP\n\express\app.js:1:316)
    at C:\Users\HP\n\express\app.js:1:367
    at Object.__dirname.153.express (C:\Users\HP\n\express\app.js:24010:15)
toe95027

toe950271#

  • Browserify* 专为浏览器打包代码而设计。

Node.js支持许多浏览器不支持的模块,这些模块必须由builtins模拟。这些模块将被特定于浏览器的shim所取代。有些模块只提供在浏览器中有意义的节点API的子集。
因此,您正在运行一个应用程序,该应用程序已经转换了所有Node.js模块,以支持在浏览器中运行它所能运行的模块,回到Node中,其中模块可用,但不再使用。
尝试使用rollup,或者您也可以配置babel以满足您的需要

w7t8yxp5

w7t8yxp52#

我有这个非常相同的问题,但就像你说的编译代码应该在服务器端工作。我解决了它从这个链接:https://www.linkedin.com/pulse/bundling-nodemodules-your-nodejs-app-one-single-file-xuan-son-nguyen/
使用browserify进行捆绑,使用terser进行缩小。首先全局安装它们:

npm install -g browserify
npm install -g terser

接下来,我们必须向package.json添加一个构建脚本

...
"scripts": {
    ...
    "build": "browserify --node --ignore-missing index.js | terser > bundle.js"
}
...

每次要提升到生产环境时,都必须创建一个新的捆绑包:

npm run build

将创建一个名为“bundle.js”的新文件。
希望有和平,和平就有了。快乐编码。

相关问题