【问题标题】:Cannot find module './lib/BufferMaker' when use buffermaker in Meteor 1.5.1在 Meteor 1.5.1 中使用 buffermaker 时找不到模块“./lib/BufferMaker”
【发布时间】:2018-01-06 20:43:21
【问题描述】:

我在 Meteor(1.5.1 版)中使用一些 npm 包时遇到了问题,非常感谢任何帮助。

我的环境:

  • 流星1.5.1
  • buffermaker1.2.0

我做了什么:

  1. 创建一个示例 Meteor 应用程序。

流星创建测试

  1. 安装 buffermaker

meteor npm install --save buffermaker

  1. 通过编辑test/client/main.js在Meteor应用中导入buffermaker,添加一行:

从 'buffermaker' 导入 { BufferMaker };

test/client/main.js的全部内容:

import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import { BufferMaker } from 'buffermaker';

import './main.html';

Template.hello.onCreated(function helloOnCreated() {
  // counter starts at 0
  this.counter = new ReactiveVar(0);
});

Template.hello.helpers({
  counter() {
    return Template.instance().counter.get();
  },
});

Template.hello.events({
  'click button'(event, instance) {
    // increment the counter when button is clicked
    instance.counter.set(instance.counter.get() + 1);
  },
});
  1. 运行 Meteor 应用程序

流星 npm 安装

流星

我在浏览器 (Chrome) 的控制台中收到此错误。

modules-runtime.js?hash=8587d18…:231 Uncaught Error: Cannot find module './lib/BufferMaker'
    at makeMissingError (modules-runtime.js?hash=8587d18…:231)
    at require (modules-runtime.js?hash=8587d18…:241)
    at index.js (modules.js?hash=e9fc8db…:1016)
    at fileEvaluate (modules-runtime.js?hash=8587d18…:343)
    at require (modules-runtime.js?hash=8587d18…:238)
    at main.js (main.js:1)
    at fileEvaluate (modules-runtime.js?hash=8587d18…:343)
    at require (modules-runtime.js?hash=8587d18…:238)
    at app.js?hash=3f48780…:101

【问题讨论】:

    标签: node.js meteor


    【解决方案1】:

    你试过了吗:

    import BufferMaker from 'buffermaker';
    

    如果不是大多数模块,一些模块会执行默认导出,这意味着您不需要在导入语句中使用花括号

    【讨论】:

    • 非常感谢您的回答,我已经尝试过了,但不起作用。该模块不使用默认导出。
    • 当我在test/server/man.js 中将其导入为:import { BufferMaker } from 'buffermaker'; 时没有问题。我不知道为什么我不能在客户端 js 中导入它。
    • BufferMaker 可能在没有 browserify 的情况下不受浏览器支持(就像 Buffer 一样),因为它是一个节点模块。使用browserify.org。让它在您的浏览器中运行
    • 根据 Meteor 的说法,Browserify 在 1.5.1 中默认支持。我需要自己使用 browserify 吗? guide.meteor.com/using-npm-packages.html#client-npm
    【解决方案2】:

    原来buffermaker 以一种奇怪的方式重新导出了它的主模块,所以第一步是通过直接导入BufferMaker 来绕过它:

    import BufferMaker from 'buffermaker/lib/BufferMaker';
    

    然后你会发现当你调用.make()时,它会抱怨Buffer不存在。要在客户端获取Buffer,首先安装meteor-node-stubs

    $ meteor npm install --save meteor-node-stubs
    

    然后加载buffer 模块并将其粘贴在窗口上,以便BufferMaker 可以访问它

    import { Buffer } from 'buffer';
    window.Buffer = Buffer;
    /* OR do it with require */
    window.Buffer = require('buffer').Buffer;
    

    【讨论】:

      猜你喜欢
      • 2014-03-14
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2017-10-13
      相关资源
      最近更新 更多