Dojo1.9:Node.js相对路径问题

Dojo 1.9: Node.js relative path issue

本文关键字:相对 路径 问题 js Node Dojo1      更新时间:2023-09-26

当需要一个相对标准的node.js文件时,我在使用NodeJS的Dojo Toolkit时遇到了问题:

我有以下目录

node-stuff
  start-server.js
  source
    dojo
    app-client
    app-common
    app-server
      lib
        http-server.js
      routes
        index.js
      server-config.js
      server.js

我使用start-server.js文件引导dojo工具包:

dojoConfig = require('./source/app-server/server-config');
require("./source/dojo/dojo.js");

这将加载包含dojoConfig信息的服务器配置文件

module.exports = {
    baseUrl: 'source/',
    async: true,
    packages: [
        {
            name: 'dojo',
            location: 'dojo'
        },
        {
            name: 'app-server',
            location: 'app-server'
        },
        {
            name: 'app-client',
            location: 'app-client'
        },
        {
            name: 'app-common',
            location: 'app-common'
        }
    ],
    deps: [
        "source/app-server/server.js"
    ]
};

在我的http-server.js文件中,我正在尝试使用以下节点require:

define([
  "dojo/node!express", //works OK
  "dojo/node!path", //works OK
  "app-common/roots", //works OK
  "dojo/node!../routes/index"] //this last one has the following error message

错误消息产生

"C:'Program Files'nodejs'node.exe" start-server.js
module.js:340
    throw err;
          ^
Error: Cannot find module 'source'app-server'routes'index'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at source/dojo/node.js:41:15
    at Object.load (source/dojo/node.js:46:6)
    at injectPlugin (C:'Users'james_000'RubymineProjects'node-stuff'source'dojo'dojo.js:1321:13)
    at C:'Users'james_000'RubymineProjects'node-stuff'source'dojo'dojo.js:1136:6
    at forEach (C:'Users'james_000'RubymineProjects'node-stuff'source'dojo'dojo.js:93:6)
    at resolvePluginLoadQ (C:'Users'james_000'RubymineProjects'node-stuff'source'dojo'dojo.js:1129:4)

我已经尝试过从DojoGithub中获取节点的最新版本。这改变了的错误线

Cannot find module 'source'app-server'routes'index'

Cannot find module 'app-server'routes'index'

这是一个bug,还是我做错了什么?

我想知道问题是否在于dojo/node!总是强制路径为source/app-server/routes/index,而不是/源/应用服务器/路由/索引。如果我把source/app-server/routes文件夹放在node_modules文件夹中,那么它工作得很好。它似乎不喜欢不在该文件夹内的相对文件路径。

编辑:我测试了上面的内容,结果不正确。

这看起来像https://bugs.dojotoolkit.org/ticket/16414#comment:16这在Dojo1.9.1中得到了修复。

EDIT:另外,baseUrl需要是目录的绝对路径。