2

我编写了一个节点模块并将其作为节点包发布。当我在后端应用程序(纯 nodejs,没有 babel 或 transpile)中使用它时,它可以工作。

但是,当我在前端(在我的情况下为“create-react-app”)应用程序中使用相同的 npm 模块时,它会中断。贝娄是确切的错误:

Module parse failed: Unexpected token (14:2)
You may need an appropriate loader to handle this file type.

该错误是指我对扩展运算符 ( ...) 的使用。我宁愿不必重写库,而宁愿添加某种转译器来打包我的库。我还没有找到一个明确的解决方案,它们都非常复杂。

我试过使用rollupjshttps://github.com/insin/nwb。可悲的是,这似乎都不是我所追求的。

运行我的代码:

您可以使用npm i cbs-proxy-client@0.0.3. 然后将该行添加const cbsProxyClient = require('cbs-proxy-client')import cbsProxyClient from 'cbs-proxy-client'您的任何脚本中。

建议将不胜感激:)

4

1 回答 1

2

用于前端的库应该打包一个已经转译的源 javascript 版本。为此,您可能希望在库中使用汇总作为构建过程来创建捆绑文件。您可以使用babel转译代码以获得所需的浏览器支持。假设捆绑文件保存在dist/bundle.js. entry现在您将修改 package.json 以使用参数中的参数将此捆绑文件加载为文件mainpackage.json

如果您使用 rollup 或 webpack 构建,很容易忽略捆绑文件应准备为库。这意味着使用 commonjs 导入文件应该能够export更正变量。典型的 webpack 构建会删除此类导出,因为它应该直接在浏览器上工作。自从我创建我的第一个 js 库以来,这个博客就在我的书签中,标题为“js 库步骤” 。

请注意,您不需要将生成的文件置于版本控制中。您可以使用package.json 中的npm files 属性来打包捆绑的文件,同时在 git 中忽略它们。

于 2018-08-03T18:05:34.930 回答