【问题标题】:How to load Nodejs core modules using webpack如何使用 webpack 加载 Nodejs 核心模块
【发布时间】:2017-04-13 23:01:46
【问题描述】:

我在将 nodejs 的核心模块加载到浏览器时遇到问题。

我的xlsx 库依赖于fs,这是一个核心模块,加载我的应用程序会产生cannot find module "fs" 错误。

我反复在谷歌上搜索了here - 说我应该将target:node 添加到我的webpack.config.js 文件中,但是按照他的建议完成会产生另一个错误 -> process is not defined

我想知道是否有任何模块加载器可以满足这种需求?我找不到。

webpack.config.js:

module.exports = {
  entry: "./app/boot",
  output: {
    path: __dirname,
    filename: "./dist/bundle.js"
  },
  resolve: {
    extensions: ['', '.js', '.ts']
  },
  module: {
    loaders: [
      { test: /\.ts/,   loaders: ["ts-loader"], exclude: /node_modules/ }
    ],
    preLoaders: [
      // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'.
      { test: /\.js$/, loader: "source-map-loader", exclude: ['node_modules', 'ext-*', 'lib', 'tools'] }
    ]
  },
  debug: true,
  devtool: 'source-map'
};

任何见解都将不胜感激,在此先感谢,如果有任何其他信息有帮助,请告诉我。

我没有使用babel 也没有使用gulp

【问题讨论】:

    标签: javascript node.js webpack es6-module-loader


    【解决方案1】:

    你不能。

    没有可以在浏览器中正常工作的 fs 等效项。出于安全原因,在浏览器中执行的 JavaScript 在沙箱中运行,您只能非常有限地访问客户端的文件系统 which is what the module fs is used for in NodeJS。

    【讨论】:

    • 我明白了,这很有道理。那么使用fs 使用xlsx 我该怎么办?
    • 这取决于库。你可以在没有fs 的情况下使用它吗?例如通过来自服务器的 HTTP 请求手动加载文件?然后这样做。否则,您将不得不寻找不同的库。
    • 这可能超出了问题的范围,但更准确地说,我使用 ng2-file-uploader 从客户端获取文件并使用 node-xlsx 将文件解析为对象,所有在客户端不使用服务器,有什么建议吗?
    • node-xlsx 似乎已经嵌入了 NodeJS 的 API,对您没有任何帮助。它基于js-xlsx,但它似乎也可以在浏览器中运行:github.com/SheetJS/js-xlsx
    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2019-09-20
    • 2018-04-04
    • 2017-12-04
    • 2016-02-26
    • 2018-09-23
    相关资源
    最近更新 更多