我试图让protobuf在打字稿中运行。
官方Google文档说只需使用npm install google-protobuf
,然后使用require('google-protobuf')
。
我对npm缺乏经验,所以我遇到了几个问题。首先,require('google-protobuf')
返回错误404,因为找不到该文件。我反而选择手动要求该文件,因此我在index.html
:
<script src="node_modules/google-protobuf/google-protobuf.js"></script>
这个应该正常工作吗?
相反,我得到的是Uncaught reference error: exports is not defined
。我怎么开始调试这个?我试着看一下google-protobuf.js文件,发现了一些exports
语句,但我不知道我在这里做了什么。
如果它有帮助,这是我的tsconfig.json
文件:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
]
}
答案 0 :(得分:1)
首先,请确保您拥有合适的环境。我建议你:
然后,尝试以下解决方案:
// test.js
var protobuf = require('google-protobuf');
console.log(protobuf);
使用node test.js
运行脚本。
// test.ts
import * as protobuf from 'google-protobuf';
console.log(protobuf);
使用ts-node test.ts
运行脚本。
如果您在终端中看到常规对象,恭喜!该模块正在运行。但现在,如果您想在浏览器中使用它,则需要模块加载器/捆绑器,如 Browserify 或 Webpack ...
答案 1 :(得分:0)
你正在使用打字稿。尝试
import protobuf = reqquire('google-protobuf')
或通过npm install @types/google-protobuf'
安装类型,并将其包含在import * as protobuf from 'google-protobuf'
HTML中的include不起作用,因为js文件使用导入并且依赖关系未解析。
如果你想在客户端使用它,你最终可以使用browserify构建你的前端js文件。