Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issues with strong-globalize #68

Closed
gijo-varghese opened this issue Nov 27, 2018 · 15 comments · Fixed by #106
Closed

Issues with strong-globalize #68

gijo-varghese opened this issue Nov 27, 2018 · 15 comments · Fixed by #106

Comments

@gijo-varghese
Copy link

I'm using Loopback to build my project. Loopback/Stroploop internally uses Globalize and cldr for globalization in strong-globalize. Looks like they use webpack while building.

And I'm getting the following error:

16753kB  /index.js                 [12444ms]
internal/modules/cjs/loader.js:589
    throw err;
    ^

Error: Cannot find module 'cldr'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:587:15)
    at Function.Module._load (internal/modules/cjs/loader.js:513:25)
    at Module.require (internal/modules/cjs/loader.js:643:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/tmp/86f4f7db49348/index.js:77424:18)
    at __webpack_require__ (/tmp/86f4f7db49348/index.js:21:30)
    at /tmp/86f4f7db49348/index.js:90591:4
    at Object.<anonymous> (/tmp/86f4f7db49348/index.js:90598:2)
    at __webpack_require__ (/tmp/86f4f7db49348/index.js:21:30)
    at Object.<anonymous> (/tmp/86f4f7db49348/index.js:306120:18)
@rauchg rauchg changed the title Issues with Webpack Issues with strong-globalize Nov 27, 2018
@jbcpollak
Copy link

I'm not sure if this is the same issue, but we are natively using globalize in some of our code and get the following error when we run ncc build (I'm happy to file as a separate ticket or delete the comment if this is unrelated to the original issue):

ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist" attempted to require "cldr" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist" attempted to require "cldr/event" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/supplemental" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/event" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/supplemental" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/event" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/supplemental" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/event" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/supplemental" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/event" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/supplemental" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/event" but could not be resolved, assuming external.
ncc: Module directory "/Users/jpollak/src/project/node_modules/globalize/dist/globalize" attempted to require "cldr/event" but could not be resolved, assuming external.

@gijo-varghese
Copy link
Author

@jbcpollak Yes, I'm getting similar errors

@guybedford
Copy link
Contributor

The root cause of this seems to be that Webpack is detecting globalize/dist/globalize.js as an AMD module instead of a JS module, resulting in it trying it trying to load the "cldr" dependency which does not exist.

The fix would be to disable the AMD detection in Webpack entirely. I just have no idea how to do that yet... !

@guybedford
Copy link
Contributor

Ok with the AMD detection disabled in #79, the remaining bug on this one is a directory asset emission case, which seems like it might be solved by #58.

@gijo-varghese
Copy link
Author

Tried the latest version, same error

@rauchg
Copy link
Member

rauchg commented Dec 3, 2018

Seems indeed that it's still broken with 0.3.0 @guybedford

▲  tmp/ cat index.js
require('strong-globalize')
▲  tmp/ ncc run index.js
1078kB  index.js   [2136ms]
Error: ENOENT: no such file or directory, lstat '/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/cldr'
    at Object.realpathSync (fs.js:1477:7)
    at alreadyScanned (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/node_modules/strong-globalize/lib/helper.js:196:1)
    at enumerateFilesSyncPriv (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/node_modules/strong-globalize/lib/helper.js:213:1)
    at enumerateFilesSync (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/node_modules/strong-globalize/lib/helper.js:192:1)
    at getSupportedLanguages (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/node_modules/strong-globalize/lib/helper.js:673:1)
    at Object.isSupportedLanguage (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/node_modules/strong-globalize/lib/helper.js:663:1)
    at osLanguage (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/node_modules/strong-globalize/lib/globalize.js:43:1)
    at Object.<anonymous> (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/node_modules/strong-globalize/lib/globalize.js:37:1)
    at __webpack_require__ (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/webpack/bootstrap:19:1)
    at Object.<anonymous> (/private/var/folders/bm/grflgmxs62g01cd9m8sjjm740000gn/T/aec16dbf5934f/webpack:/node_modules/strong-globalize/lib/strong-globalize.js:8:1)

@guybedford
Copy link
Contributor

Unfortunately it seems like #58 won't actually solve this as the code that does the lookup for "cldr" is beyond the reach of static analysis (for now).

Strong globalize should work if the "cldr" directory from "node_modules/strong-globalize/cldr" is just emitted in the build.

One option here might be to even hard-code the "cldr" directory emission for the specific version ranges of strong-globalize. We could create a custom ".json" manifest file to track these kinds of custom emissions. I know it sounds daft, but it would provide a path.

@guybedford
Copy link
Contributor

Actually it turns out directory emission can work... should have a PR up soon.

@gijo-varghese
Copy link
Author

@guybedford I'm still getting errors. I'm not sure whether its due to globalize

Emitting directory /home/gijo/workspace/hyperloop/node_modules/loopback/server/middleware as middleware
Emitting directory /home/gijo/workspace/hyperloop/node_modules/strong-globalize/cldr as cldr
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/strong-remoting/lib" attempted to require "socket.io" but could not be resolved, assuming external.
Emitting directory /home/gijo/workspace/hyperloop/node_modules/strong-error-handler/views as views
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/mysql" attempted to require "mysql2" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/mssql" attempted to require "tedious" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/mssql" attempted to require "tedious" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/pg/lib/native" attempted to require "pg-native" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/postgres" attempted to require "pg-hstore" but could not be resolved, assuming external.
Emitting directory /home/gijo/workspace/hyperloop/node_modules/loopback-boot/node_modules/strong-globalize/cldr as cldr
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/sqlite" attempted to require "sqlite3" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/useragent/lib" attempted to require "yamlparser" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/loopback-boot/node_modules/cross-spawn" attempted to require "spawn-sync" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util" attempted to require "npm" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util" attempted to require "node-gyp" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib" attempted to require "aws-sdk" but could not be resolved, assuming external.
Emitting directory /home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/nw-pre-gyp as nw-pre-gyp
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib" attempted to require "aws-sdk" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib" attempted to require "aws-sdk" but could not be resolved, assuming external.
(node:8502) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open '/tmp/d8c26a4fda9c5/middleware/context.js'
    at Object.openSync (fs.js:451:3)
    at Object.writeFileSync (fs.js:1213:35)
    at module.exports.ncc.then (/home/gijo/.nvm/versions/node/v11.3.0/lib/node_modules/@zeit/ncc/dist/ncc/cli.js:2410:14)
(node:8502) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:8502) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

@gijo-varghese
Copy link
Author

I'm still getting the error with latest version:

Emitting directory /home/gijo/workspace/hyperloop/server/models as models
Emitting directory /home/gijo/workspace/hyperloop/node_modules/loopback/server/middleware as middleware
Emitting directory /home/gijo/workspace/hyperloop/node_modules/loopback-boot/node_modules/strong-globalize/cldr as cldr
Emitting directory /home/gijo/workspace/hyperloop/node_modules/strong-globalize/cldr as cldr
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/mssql" attempted to require "tedious" but could not be resolved, assuming external.
Emitting directory /home/gijo/workspace/hyperloop/node_modules/strong-error-handler/views as views
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/strong-remoting/lib" attempted to require "socket.io" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/useragent/lib" attempted to require "yamlparser" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/sqlite" attempted to require "sqlite3" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/postgres" attempted to require "pg-hstore" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/mysql" attempted to require "mysql2" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/sequelize/lib/dialects/mssql" attempted to require "tedious" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/pg/lib/native" attempted to require "pg-native" but could not be resolved, assuming external.
Emitting directory /home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util/nw-pre-gyp as nw-pre-gyp
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/loopback-boot/node_modules/cross-spawn" attempted to require "spawn-sync" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib" attempted to require "aws-sdk" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib" attempted to require "aws-sdk" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util" attempted to require "npm" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib/util" attempted to require "node-gyp" but could not be resolved, assuming external.
ncc: Module directory "/home/gijo/workspace/hyperloop/node_modules/bcrypt/node_modules/node-pre-gyp/lib" attempted to require "aws-sdk" but could not be resolved, assuming external.
    0kB  user_agent.after.yaml
    0kB  user_agent.before.yaml
    0kB  verify.ejs
    0kB  nw-pre-gyp/package.json
    0kB  middleware/favicon.js
    0kB  middleware/error-handler.js
    0kB  middleware/context.js
    1kB  donotedit
    1kB  views/style.css
    1kB  views/default-error.ejs
    1kB  nw-pre-gyp/index.html
    1kB  favicon.ico
    1kB  middleware/url-not-found.js
    1kB  middleware/status.js
    1kB  middleware/static.js
    2kB  package.json
    2kB  middleware/rest.js
    5kB  middleware/token.js
   31kB  syslog.node
   68kB  bcrypt_lib.node
 2331kB  cldr/cldr_29.0.1.json
 2620kB  cldr/cldr_32.0.1.json
16786kB  index.js
21853kB  [18118ms]

/tmp/c933c4bb689bd/webpack:/node_modules/strong-globalize/lib/helper.js:80
    assert(validPath, '*** setRootDir: Intl dir not found under: ' + rootPath.toString());
^
AssertionError [ERR_ASSERTION]: *** setRootDir: Intl dir not found under: /tmp
    at Object.setRootDir (/tmp/c933c4bb689bd/webpack:/node_modules/strong-globalize/lib/helper.js:80:1)
    at Function.SetRootDir (/tmp/c933c4bb689bd/webpack:/node_modules/strong-globalize/lib/strong-globalize.js:62:1)
    at Object.<anonymous> (/tmp/c933c4bb689bd/webpack:/node_modules/loopback/lib/globalize.js:10:1)
    at __webpack_require__ (/tmp/c933c4bb689bd/webpack:/webpack/bootstrap:19:1)
    at Object.<anonymous> (/tmp/c933c4bb689bd/webpack:/node_modules/loopback/lib/server-app.js:7:1)
    at __webpack_require__ (/tmp/c933c4bb689bd/webpack:/webpack/bootstrap:19:1)
    at Object.<anonymous> (/tmp/c933c4bb689bd/webpack:/node_modules/loopback/lib/loopback.js:12:1)
    at __webpack_require__ (/tmp/c933c4bb689bd/webpack:/webpack/bootstrap:19:1)
    at Object.<anonymous> (/tmp/c933c4bb689bd/webpack:/node_modules/loopback/index.js:11:1)
    at __webpack_require__ (/tmp/c933c4bb689bd/webpack:/webpack/bootstrap:19:1)

@guybedford
Copy link
Contributor

Note the loopback bug fixes in PR #122 still haven't been merged.

@gijo-varghese
Copy link
Author

Oh ok

@gijo-varghese
Copy link
Author

Looks like strong-globalize errors are fixed, but Loopback is still doesn't work. It's not detecting a few packages (they're built inside Loopback)

/home/gijo/workspace/hyperloop/dist/index.js:424268
    throw err;
    ^

Error: Cannot resolve path "compression"
    at resolveAppPath (/home/gijo/workspace/hyperloop/dist/index.js:424266:15)
    at resolveAppScriptPath (/home/gijo/workspace/hyperloop/dist/index.js:424597:22)
    at resolveMiddlewarePath (/home/gijo/workspace/hyperloop/dist/index.js:424469:20)
    at /home/gijo/workspace/hyperloop/dist/index.js:424387:24
    at Array.forEach (<anonymous>)
    at /home/gijo/workspace/hyperloop/dist/index.js:424386:18
    at Array.forEach (<anonymous>)
    at /home/gijo/workspace/hyperloop/dist/index.js:424381:30
    at Array.forEach (<anonymous>)
    at buildMiddlewareInstructions (/home/gijo/workspace/hyperloop/dist/index.js:424379:15)
    at compile (/home/gijo/workspace/hyperloop/dist/index.js:423961:5)
    at bootLoopBackApp (/home/gijo/workspace/hyperloop/dist/index.js:395285:22)
    at Object.<anonymous> (/home/gijo/workspace/hyperloop/dist/index.js:285412:1)
    at Object.<anonymous> (/home/gijo/workspace/hyperloop/dist/index.js:285445:30)
    at __webpack_require__ (/home/gijo/workspace/hyperloop/dist/index.js:21:30)
    at /home/gijo/workspace/hyperloop/dist/index.js:85:18

@Jwalin-Thaker
Copy link

Any update?
I am still experiencing the issue @guybedford
Error: ENOENT: no such file or directory, lstat '/cldr' at Object.realpathSync (fs.js:1457:7)

@bhanu-affinidi
Copy link

I am still facing this with loopback
REPORT RequestId: d2599b9e-2472-4a22-98bd-13ed607caade Init Duration: 0.13 ms Duration: 324.74 ms Billed Duration: 325 ms Memory Size: 256 MB Max Memory Used: 256 MB {"errorType":"Error","errorMessage":"ENOENT: no such file or directory, lstat '/var/cldr'","trace":["Error: ENOENT: no such file or directory, lstat '/var/cldr'"," at Object.realpathSync (node:fs:2580:7)"," at alreadyScanned (/var/task/index.js:16120:60)"," at enumerateFilesSyncPriv (/var/task/index.js:16136:11)"," at enumerateFilesSync (/var/task/index.js:16116:14)"," at getSupportedLanguages (/var/task/index.js:16551:7)"," at Object.isSupportedLanguage (/var/task/index.js:16544:24)"," at osLanguage (/var/task/index.js:20138:18)"," at node_modules/strong-globalize/lib/globalize.js (/var/task/index.js:20132:19)"," at __require (/var/task/index.js:12:50)"," at node_modules/strong-globalize/lib/strong-globalize.js (/var/task/index.js:20524:21)"]}%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants