首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解r.js、杏仁和相关路径

理解r.js、杏仁和相关路径
EN

Stack Overflow用户
提问于 2016-02-14 08:37:10
回答 1查看 553关注 0票数 4

我看到了这个答案,但是AFAICT并不适合我。也许我在做傻事。

我正在使用杏仁格朗特.控制-要求。我试过一堆东西

这是我的布局

代码语言:javascript
复制
.
├── Gruntfile.js
├── 3rdparty
│   ├── require.js
├── src
│   ├── lib.js
│   └── main.js
└── node_modules
    └── almond
        └── almond.js

这是我的咕噜-控制-要求的配置

代码语言:javascript
复制
requirejs: {
  full: {
    options: {
      baseUrl: "./",
      name: "node_modules/almond/almond.js",
      include: [ "src/main.js" ],
      out: "dist/app.js",
      optimize: "none",
    },
  },
},

main.js看起来像这样

代码语言:javascript
复制
requirejs(['./lib',], function(lib) {
  lib.hello();
});

lib.js看起来像这样

代码语言:javascript
复制
define([], function() {
    return {
      hello: function() {
          console.log("hello from lib");
      },
    };
});

如果运行使用require.js的页面,如

代码语言:javascript
复制
<script src="3rdparty/require.js" data-main="src/main.js"></script>

它运行得很好。你可以看到它住在这里。检查控制台,您将看到它打印hello from lib

所以我咕哝了一声。然后运行一个使用dist/app.js的页面,并得到错误信息。

代码语言:javascript
复制
Uncaught Error: undefined missing lib

这是一个活页

检查我看到的生成的dist/app.js已被转换为

代码语言:javascript
复制
define('src/lib',[], function() {
   ...
});

main就是这样把它包括进来的

代码语言:javascript
复制
requirejs(['./lib'], function(lib) {
  ...
});

换句话说,r.js生成的src/lib所生成的id与main引用./lib的id不匹配。

对于r.js来说,这似乎是一个非常直接的例子。就像“你好世界”。

我做错了什么?

我尝试过的一件事是将baseUrl改为./src

代码语言:javascript
复制
requirejs: {
  full: {
    options: {
      baseUrl: "./src",
      name: "node_modules/almond/almond.js",
      include: [ "src/main.js" ],
      out: "dist/app.js",
      optimize: "none",
    },
  },
},

但现在我得到了

代码语言:javascript
复制
{ [Error: Error: ENOENT: no such file or directory, open '/Users/gregg/temp/grunt-contrib-requirejs-example/src/node_modules/almond/almond.js'
    at Error (native)
]
  originalError: 
   { [Error: ENOENT: no such file or directory, open '/Users/gregg/temp/grunt-contrib-requirejs-example/src/node_modules/almond/almond.js']
     errno: -2,
     code: 'ENOENT',
     syscall: 'open',
     path: '/Users/gregg/temp/grunt-contrib-requirejs-example/src/node_modules/almond/almond.js',
     fileName: '/Users/gregg/temp/grunt-contrib-requirejs-example/src/node_modules/almond/almond.js' } }

所以我试着修杏仁路

代码语言:javascript
复制
requirejs: {
  full: {
    options: {
      baseUrl: "./src",
      name: "../node_modules/almond/almond.js",
      include: "main",
      out: "dist/app.js",
      optimize: "none",
    },
  },
},

但这也失败了

代码语言:javascript
复制
{ [Error: Error: ERROR: module path does not exist: ../node_modules/almond/almond.js for module named: ../node_modules/almond/almond.js. Path is relative to: /Users/gregg/temp/grunt-contrib-requirejs-example
    at /Users/gregg/temp/grunt-contrib-requirejs-example/node_modules/requirejs/bin/r.js:30214:35
]
  originalError: [Error: ERROR: module path does not exist: ../node_modules/almond/almond.js for module named: ../node_modules/almond/almond.js. Path is relative to: /Users/gregg/temp/grunt-contrib-requirejs-example] }

我没有得到什么?

如果你愿意的话,整件事都登记在这里的github

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 09:11:37

所以这就是答案。

r.js更喜欢模块名而不是路径

代码语言:javascript
复制
requirejs: {
  full: {
    options: {
      baseUrl: "./src",
      paths: {
        almond: "../node_modules/almond/almond",
      }
      name: "almond",
      include: [ "main.js" ],
      out: "dist/app.js",
      optimize: "none",
    },
  },
},
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35389879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档