Prinzhorn
Prinzhorn

Reputation: 22508

Using the FileAPI library with browserify

The FileAPI library (https://github.com/mailru/FileAPI/issues/202) does not officially support CommonJS modules. I've tried using browserify-shim but I'm not able to make it work. After requireing fileapi I just get an empty object back. I've created a repo for reproduction here https://github.com/Prinzhorn/browserify-fileapi

Relevant package.json part

{
  "dependencies": {
    "fileapi": "2.0.15"
  },
  "devDependencies": {
    "browserify": "11.1.0",
    "browserify-shim": "3.8.10"
  },
  "browser": {
    "fileapi": "./node_modules/fileapi/dist/FileAPI.html5.js"
  },
  "browserify-shim": {
    "fileapi": "FileAPI"
  }
}

If you want to try it locally:

git clone [email protected]:Prinzhorn/browserify-fileapi.git
npm install
npm run build
chromium-browser index.html

Check out the console in Chromium, you'll see an empty array from running console.log(Object.keys(require('fileapi'))). Note that there is a global window.FileAPI with the correct API.

Does anyone know if browserify-shim is able to shim FileAPI? Because I believe it does some exotic things to manage it's dependencies (the concatenated files expect certain globals).

Upvotes: 0

Views: 80

Answers (1)

Thorsten Lorenz
Thorsten Lorenz

Reputation: 11847

You'll need to tell browserify to use browserify-shim as a transform in the package.json as outlined in this example

Mainly you're missing:

"browserify": {
   "transform": [ "browserify-shim" ]
}

Upvotes: 1

Related Questions