I am building a typescript module that I am going to share between a node server and an angular2 app, but require doesn't seem to be able to find it after it is installed. Here is my shared module
package.json
{
"name": "MyCommonLibrary",
"version": "0.0.1",
"description": "",
"main": "bin/index.js",
"scripts": {
},
"license": "ISC",
"devDependencies": {
"typescript": "^1.8.9",
"typings": "^0.7.9"
}
}
tsconfig.json
{
"compilerOptions":{
"target":"es5",
"module":"commonjs",
"declaration":true,
"sourceMap":true,
"sourceRoot":"src",
"outDir":"bin"
},
"exclude":[
"node_modules",
"bin",
"typings/main",
"typings/main.d.ts"
]
}
src/index.ts
export class TestClass {
name:string;
constructor(name:string){
this.name = name;
}
}
Everything seems to compile properly, my bin/index.js looks good. I run
"npm install ../MyCommonLibrary --save"
from the server project and the module installs correctly. But then I get an error when I try to compile,
cannot find module 'MyCommonLibrary'
Even though the MyCommonLibrary exists in the node_modules directory and seems to have all the proper information
server.ts
import express = require('express');
import myCommonLibrary = require('MyCommonLibrary');
var app = express();
app.get('/',function(req,res){
res.send('Hello World');
})
var server = app.listen(3000,function(){
var host:string = server.address().address;
var port:number = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
Any insight would be appreciated
EDIT: After doing a lot of digging I wound up finding a solution! From this example I found that adding
"typings":"bin/index",
To my package.json fixes the issue, even though the Atom Typescript plugin still complains, tsc compiles just fine.