このコードはWindowsで問題なく動作します。ノードLinux/Windowsの互換性の問題
var express = require('express')
, app = express()
, async = require('async')
, bodyParser = require('body-parser')
, cookies = require('cookies')
, cors = require('cors')
, fileUpload = require('multer')
, fs = require('fs')
, moment = require('moment')
, morgan = require('morgan')
, path = require('path')
, session = require('express-session')
, upload = fileUpload({ dest: './uploads' })
, uuid = require('uuid')
;
var connLaw = require('./nodeHelperFunctions/datasources').service
, connPG = require('./nodeHelperFunctions/datasources').postgis
, headers = require('./helperHtml/headers')
, footers = require('./helperHtml/footers')
, passCheck = require('./nodeHelperFunctions/hashsalt')
;
ただし、Amazon Linux AMIボックスで同じコードを実行すると、次のエラーが発生します。
module.js:471
throw err;
^
Error: Cannot find module './nodeHelperFunctions/datasources'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/ec2-user/testbed/js/app.js:17:59)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
が
var connLaw = require(path.join(__dirname, 'nodeHelperFunctions/datasources')).service
, connPG = require(path.join(__dirname, 'nodeHelperFunctions/datasources')).postgis
, headers = require(path.join(__dirname, 'helperHtml/headers'))
, footers = require(path.join(__dirname, 'helperHtml/footers'))
, passCheck = require(path.join(__dirname, 'nodeHelperFunctions/hashsalt'))
;
に私のコードを変更しようとした再Windowsで完璧に動作しますが、Linux上で同様のエラーを得た:
module.js:471
throw err;
^
Error: Cannot find module '/home/ec2-user/testbed/js/nodeHelperFunctions/datasources'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/ec2-user/testbed/js/app.js:17:15)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
どのように私は私が自分自身を書いた人のスクリプトを取得することができますWindows上で正常に動作するときにLinuxで作業しますか?
'/ home/ec2-user/testbed/js/nodeHelperFunctions/datasources'は正しいパスですか? "nodeHelperFunctions" dirはどこですか? – Joe
@akaphenomこれはおそらく正しい答えです。パス名をcammelCaseからダッシュに変更しようとしてください。また、形式をアンダースコアにしてください。 –
@saulはあなたです。ダッシュを使用すると、式の大文字と小文字を区別します。私は(今)すべてのファイルとディレクトリ名にダッシュを使用し、スクリプト内の変数にはcamelCaseを使用します。私はこの数年前に(okの2014年)に焼き付けられ、当時のUbuntu開発環境に切り替えました。 – akaphenom