0

相対標準の 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

dojo ツールキットをブートストラップするために、start-server.js ファイルを使用します。

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 ファイル内で、次のノードを使用しようとしています。

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)

Dojo Github からノードの最新バージョンを取得しようとしました。それはエラー行をから変更しました

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

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

これはバグですか、それとも何か間違っていますか?

問題は道場/ノードではないかと思います! ./source/app-server/routes/index ではなく、パスを常に source/app-server/routes/index に強制しています。source/app-server/routes フォルダーを node_modules フォルダーに配置すると、正常に動作します。そのフォルダー内にない相対ファイルパスが気に入らないようです。

編集:上記をテストしましたが、正しくありませんでした。

4

1 に答える 1

0

これはDojo 1.9.1 で修正されたhttps://bugs.dojotoolkit.org/ticket/16414#comment:16のようです。

編集:また、baseUrlディレクトリへの絶対パスである必要があります。

于 2013-08-01T23:27:47.557 に答える