【问题标题】:Module not found when using rekuire, requirish, or rfr to solve nodejs require relative issue使用 rekuire、requirish 或 rfr 解决 nodejs 需要相关问题时找不到模块
【发布时间】:2015-03-26 09:24:56
【问题描述】:

我想通过使用推荐的解决方案之一来避免here 描述的复杂相对路径问题。我遇到了三个类似的库:

我已经尝试了所有这三种方法,但都以“找不到模块”或类似错误而失败,这让我相信我做的事情根本上是错误的。我对 npm/node 比较缺乏经验。我只在浏览器中使用 node,使用 browserify 将我的应用程序捆绑到单个 JS 文件中。

这是我非常简单的 hello world 示例:

结构:

lib/Bob.js
app.js

鲍勃.js

function Bob() {
    return "I am bob";
}

module.exports = Bob;

app.js

var Bob = require('./lib/Bob.js');

console.log(Bob());

打包成一个 JS:

browserify app.js -o bundle.js

Chrome 的控制台成功输出“I am Bob”。


现在,如果我尝试使用这些库,假设需要:

要求:

npm install requirish

app.js 更改

'use strict';

require('requirish')._(module);
var Bob = require('lib/Bob');

console.log(Bob());

捆绑更改

browserify -t requirish app.js > bundle.js

我收到以下错误:

Error: Cannot find module '/lib/Bob' from '/Users/ngb/projects/MyApp/src/main/resources/public/js/hello'
at /Users/ngb/.nvm/v0.10.30/lib/node_modules/browserify/node_modules/resolve/lib/async.js:42:25

RFR:

'use strict';

var rfr = require('rfr');
var Bob = rfr('lib/Bob');

console.log(Bob());

建筑

browserify app.js -o bundle.js -d

Chrome 的控制台输出如下错误:

Uncaught Error: Cannot find module 'lib/Bob'

【问题讨论】:

    标签: javascript npm browserify


    【解决方案1】:

    Browserify 可以通过解析字符串“require”来查找模块。 如果您想同时使用客户端和服务器,请使用rfr 用于服务器端和browserify-rfr 用于browserify 的转换。

    在我看来,“rfr”是最好的,因为这个模块不会覆盖原来的需求。

    ------- 注意!附加信息, 今天 browserify-rfr 版本将我的本地文件路径留给了 bundle.js。这可能会导致另一个问题,所以我选择了requirish。由于 requirish 通过向 module.paths 推送新路径来更改原始 require 的行为,因此您总是会注意到这一点并提醒您的同事!

    谢谢!

    https://www.npmjs.com/package/requirish

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 2019-04-08
      • 2012-12-23
      • 1970-01-01
      • 2015-06-21
      相关资源
      最近更新 更多