如何导入@ orange-games / phaser-ads节点模块?

时间:2018-08-16 12:35:28

标签: javascript webpack

我已使用npm install @orange-games/phaser-ads安装了Phaser Ads

node_modules/@orange-games
└── phaser-ads
    ├── CODE_OF_CONDUCT.md
    ├── CONTRIBUTING.md
    ├── LICENSE
    ├── README.md
    ├── build
    │   ├── phaser-ads.d.ts
    │   ├── phaser-ads.js
    │   ├── phaser-ads.js.map
    │   └── phaser-ads.min.js
    ├── package.json
    ├── tsconfig.json
    ├── tslint.json
    └── vendor
        ├── cocoon.d.ts
        ├── cordova-gamedistribution.d.ts
        ├── cordova-heyzap.d.ts
        ├── game-distribution.d.ts
        └── google-ima3-sdk.d.ts

当我导入另一个模块时,我说Lodash,

import _ from 'lodash'

但是,导入PhaserAds时出现错误:

import PhaserAds from '@orange-games/phaser-ads';

Module not found: Error: Can't resolve '@orange-games/phaser-ads' in '/Users/frank/Stuff/inferno/src/states'

看来,该应用程序正在尝试从本地文件夹导入它,但我不明白为什么Lodash并非如此。难道是因为Lodash已被其他商品所必需,并且已经包含在捆绑包中了吗?

我需要在我的webpack配置中添加任何内容吗?

const path = require('path');

module.exports = {

  /**
   * Minimal build setup.
   * Create your app bundle.
   */

  entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'public', 'assets', 'scripts')
  },

  /**
   * Minimal development setup.
   * Serves files in ./public folder.
   * Refresh browser automatically when your bundle changes.
   */

  devServer: {
    publicPath: '/assets/scripts/',
    contentBase: path.join(__dirname, 'public'),
    port: 3000
  },

  module: {
    rules: [
    {
      test: /\.js$/,
      exclude: /(node_modules|bower_components)/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['env']
        }
      }
    }]
  }
};

1 个答案:

答案 0 :(得分:0)

main的{​​{1}}中似乎缺少密钥package.json,因此webpack在导入软件包时不知道要加载哪个脚本。

我认为我们无法像这样导入软件包,他们在官方文档中使用phaser-ads标记导入了该软件包。

也许您应该向包装团队报告问题,或进行PR:p