节点Linux / Windows兼容性问题

时间:2017-03-24 23:05:26

标签: node.js

此代码适用于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)

我如何获得自己编写的人员脚本,以便在Linux上完美运行时在Linux上工作?

1 个答案:

答案 0 :(得分:2)

很难说你发布了什么 - 但是要求linux上的模块对文件名敏感,而windows ......则不然。尝试检查案例。

编辑:不只是文件名 - 而是整个路径。