Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将Swagger生成的代码与webpack绑定_Javascript_Webpack_Swagger Codegen - Fatal编程技术网

Javascript 如何将Swagger生成的代码与webpack绑定

Javascript 如何将Swagger生成的代码与webpack绑定,javascript,webpack,swagger-codegen,Javascript,Webpack,Swagger Codegen,我正在创建一个新的webApp,它需要使用restapi与服务器通信。我想使用Swagger来定义restapi,并为服务器和Javascript客户端(一个在浏览器中运行的简单webapp)生成代码 我能够实现服务器(使用JavaServlet),并且它工作正常 我已经为Javascript客户端生成了代码,但我无法使其正常工作(我是Javascript、webpack、nom等方面的初学者) 我想使用webpack生成一个.js文件,该文件将由webapp加载,该.js将包含由swagger

我正在创建一个新的webApp,它需要使用restapi与服务器通信。我想使用Swagger来定义restapi,并为服务器和Javascript客户端(一个在浏览器中运行的简单webapp)生成代码

我能够实现服务器(使用JavaServlet),并且它工作正常

我已经为Javascript客户端生成了代码,但我无法使其正常工作(我是Javascript、webpack、nom等方面的初学者)

我想使用webpack生成一个.js文件,该文件将由webapp加载,该.js将包含由swagger生成的代码和我使用swagger发送查询的代码(…和一个UI!)

以下是我的项目组织:

/
 - package.json
 - node_modules (modules installed with npm)
 - src  
   ---> /main.js (code I have written to send the REST API query using Swagger generated code)  
   ---> /index.js (code generated by Swagger)  
   ---> /ApiClient.js (code generated by Swagger)  
   ---> /api (folder that contains code generated by Swagger)  
   ---> /model (folder that contains code generated by Swagger) 
 - webpack.config.js
 - runTest  ---> - bundle.js (generated by webpack)  ---> - index.html
执行webpack命令时,出现了一些错误:

/node\u modules/.bin/webpack--config webpack.config.js

散列: a77095b323ec225f9b17版本:网页2.6.1时间:396ms 资产大小Chunks Chunk Names bundle.js 6.48 kB 0[emissed]main[0]。/src/index.js 2.61 kB{0}[builded][1] ./src/main.js 212字节{0}[编译]

在./src/index.js模块中找不到错误:错误:无法解析 中的“ApiClient” “/Users/sebastien/Documents/Javascript/Stackoverflow/superagentest/src” @./src/index.js 17:4-86@./src/main.js

在./src/index.js模块中找不到错误:错误:无法解析 中的“模型/错误” “/Users/sebastien/Documents/Javascript/Stackoverflow/superagentest/src” @./src/index.js 17:4-86@./src/main.js

My main.js包含以下内容:

var MyMetadataApi = require('./index'); // See note below*.
var xxxSvc = new MyMetadataApi.defaultApi(); // Allocate the API class we're going to use.
var zzz = xxxSvc.myFieldsGet(); // Invoke the service.
index.js(由Swagger contains生成)

**注意:对于顶级AMD脚本,请使用require(['index'],function(){…}) *并将应用程序逻辑放入回调函数中。 *

* *非AMD浏览器应用程序(不推荐)可能会执行以下操作: * *var xxxSvc=新的MyMetadataApi.XxxApi();//分配我们将要使用的API类。 *var yyy=新的MyMetadataApi.yyy();//构造一个模型实例。 *YYYYModel.someProperty='someValue'; * ... *var zzz=xxxSvc.doSomething(YYYY型号);//调用服务。 * ... * *

*@模块索引 *@version 1.0.0 */ var导出={ /** *ApiClient构造函数。 *@property{module:ApiClient} */ ApiClient:ApiClient, /** *错误模型构造函数。 *@property{module:model/Error} */ 错误:错误, /** *MyField模型构造函数。 *@property{module:model/MyField} */ MyField:MyField, /** *DefaultApi服务构造函数。 *@property{module:api/DefaultApi} */ DefaultApi:DefaultApi }; 出口退税; })); 如何使webpack生成一个bundle.js,该bundle.js将成功包含由Swagger和my main.js生成的代码

我对导入/要求感到迷茫。。。我尝试用一些导入来替换require(),但没有成功(或者它可以读取index.js,但在index.js中发现问题,因为它无法导入ApiClient.js)。 Swagger生成的代码提到了什么是AMD和CommonJS应用程序

任何帮助都将不胜感激;-) 谢谢


Sebastien

我找到了一个解决方案,我需要在我的webpack.config.js中添加以下内容

我在swagger codegen GitHub存储库中找到了此修复程序:

(function(factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    define(['ApiClient', 'model/Error', 'model/MyField', 'api/DefaultApi'], factory);
  } else if (typeof module === 'object' && module.exports) {
    // CommonJS-like environments that support module.exports, like Node.
    module.exports = factory(require('./ApiClient'), require('./model/Error'), require('./model/MyField'), require('./api/DefaultApi'));
  }
}(function(ApiClient, Error, MyField, DefaultApi) {
  'use strict';

  /**
   * get_My_fields.<br>
   * The <code>index</code> module provides access to constructors for all the classes which comprise the public API.
   * <p>
   * An AMD (recommended!) or CommonJS application will generally do something equivalent to the following:
   * <pre>
   * var MyMetadataApi = require('index'); // See note below*.
   * var xxxSvc = new MyMetadataApi.XxxApi(); // Allocate the API class we're going to use.
   * var yyyModel = new MyMetadataApi.Yyy(); // Construct a model instance.
   * yyyModel.someProperty = 'someValue';
   * ...
   * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
   * ...
   * </pre>
   * <em>*NOTE: For a top-level AMD script, use require(['index'], function(){...})
   * and put the application logic within the callback function.</em>
   * </p>
   * <p>
   * A non-AMD browser application (discouraged) might do something like this:
   * <pre>
   * var xxxSvc = new MyMetadataApi.XxxApi(); // Allocate the API class we're going to use.
   * var yyy = new MyMetadataApi.Yyy(); // Construct a model instance.
   * yyyModel.someProperty = 'someValue';
   * ...
   * var zzz = xxxSvc.doSomething(yyyModel); // Invoke the service.
   * ...
   * </pre>
   * </p>
   * @module index
   * @version 1.0.0
   */
  var exports = {
    /**
     * The ApiClient constructor.
     * @property {module:ApiClient}
     */
    ApiClient: ApiClient,
    /**
     * The Error model constructor.
     * @property {module:model/Error}
     */
    Error: Error,
    /**
     * The MyField model constructor.
     * @property {module:model/MyField}
     */
    MyField: MyField,
    /**
     * The DefaultApi service constructor.
     * @property {module:api/DefaultApi}
     */
    DefaultApi: DefaultApi
  };

  return exports;
}));
module: {
  rules: [
    {
      test: /my_client\/.*\.js$/,
      use: 'imports-loader?define=>false'
    }
  ]
},
node: {
  fs: 'empty'
}